2016-04-28 3 views
1

テーブルがあります(ng-repeatを使用してバックエンドから受け取ったデータが入っています)。各行にはチェックボックスがあり、チェックボックスが選択されている場合(multiple)、私は行を削除するためにサーバーに要求を送信したい。これを行うには、私のテーブルの一意のフィールドにチェックボックスをバインドしたいが、正しい構文を得ることができない。 私は以下のオプションを試してみましたが、読んでも問題ありません。テーブルのユニークな値をチェックボックスのng-modelにバインドする

<input type="checkbox" ng-model="demo.Custid" >//this replaced the value in the table with true or false. 

    <input type="checkbox" ng-model="formData.checkboxes[demo.Custid]" >//this gave me values in the below format {"12500":true,"125001":false} 

はありますとにかく、私は(この場合は)直接一意NG-モデルにバインドされた顧客IDの値を取得できますか?私は、これらの値を取得し、データを削除するために、サーバーにリクエストを送信したいです対応する顧客のテーブルから削除します。

.controller('Controller1',function($scope,$rootScope,$routeParams){ 
$scope.name = 'Controller1'; 
$scope.params = $routeParams; 
$scope.formData = { 
      checkboxes: {} 

        }; 
$scope.demos = [ 
       { 'Account':'abc.com', 
        'Custid': 125000, 
        }, 
        {'Account':'abc.com', 
        'Custid': 125001, }, 
        { 'Account':'abc.com', 
        'Custid': 125002,} 
       ] 


     }) 

私はangle jsを初めて利用しました。ヘルプ/ポインターは本当に役に立ちます。

答えて

2

ng-clickを使用します。

すでにng-repeatループのデモがあります。 $ scope.demosとdemo.Custidを見て、私はあなたのことを前提としています。

ng-repeat = "demo in demos"

が今だけ NGクリック=「MyFunctionを(demo.Custid)」

を使用してスコープに定義された関数にそのdemo.Custidを渡す私は自分自身のためにそれを容易にするためにあなたのコードを少し適応しますが、このかなり明白でなければなりません:

編集:私はちょうど私がこのコードを作成するためにjsfiddleに角度1.01テンプレートを使用していたが実現、私はそれを残したが、ここでangularjs 1.5.5

で実施例に fiddleですよ

index.html

<div ng-controller="Controller1"> 
    <input type="submit" ng-click="sendToBackend()"> 
    {{name}} 
    <table> 
    <thead><tr><td>Select</td><td>Customer</td></tr> 
    </thead> 
    <tbody> 
     <tr ng-repeat="demo in demos"> 
     <td><input type="checkbox" ng-click="addToList(demo.Custid)"></td> 
     <td>{{demo.Custid}}</td> 
     </tr> 
    </tbody> 
    </table> 
    <ul> 
    <li ng-repeat="check in checkboxes">{{check}}</li> 
    </ul> 
</div> 

あなたにここからはmyapp.js

var myApp = angular.module('myApp', []); 

function Controller1($scope) { 
    $scope.name = 'Controller1'; 
    $scope.checkboxes = []; 
    $scope.demos = [{Account: 'abc.com',Custid: 125000,}, 
        {Account: 'abc.com',Custid: 125001,}, 
        {Account: 'abc.com',Custid: 125002,}]; 
    $scope.addToList = function(id) { 
     $scope.checkboxes.push(id); 
    }; 
    $scope.sendToBackend = function() { 
     alert("sending " + $scope.checkboxes.length + " items to backend"); 
    }; 

}; 

は、あなたがそれを望むすべてを行うことができるはずです。より具体的な質問がある場合は、撮影してください!

+0

返信ありがとうRobby.Iは、ユーザーがチェックボックスをクリックしてチェックを外すと、削除されるリストに値が追加されるという点を除いて、完全にあなたのメソッドを試しました。 – Batman

+1

これを行う方法の1つは、htmlでng-click = "addToList($ event、demo.Custid")と関数定義$ scope.addToList = function($ event、id )。次に、$ event.target.checkedがtrueであるかどうかをチェックして配列に追加します(falseの場合は配列内でそれを検索して削除します)。 [リンク](http://stackoverflow.com/questions/9792927/javascript-array-search-and-remove-string)を参照してください。もちろん、関数をおそらくupdateListに名前を変更する必要があります。また、これがあなたの質問に答えた場合は、私の回答を受け入れられた回答としてマークしてください。 – RobbyD

+0

あまりにも多くのRobby.I今日はそれを試してみて、それは完全に動作します:) – Batman

関連する問題