2016-06-13 10 views
0

で取得します。すべての行をチェックボックスでアサーションし、すべての行をチェックするオプションがあります。 配列のテーブルの選択された行IDを取得したい。テーブルでは、選択された行IDを配列

ここにはplunker codeです。

HTML:

<table id="datatable-buttons" class="table table-striped table-bordered"> 
            <thead> 
             <th> 
               <input type="checkbox" ng-model="selectRowId" ng-click="selectedAll()"> 
             </th> 
            </thead> 
            <tbody ng-init="get_product()"> 
             <!--step 6--> 
             <tr ng-repeat="product in filtered = (pagedItems| filter:search | orderBy : predicate :reverse) | startFrom:currentPage * entryLimit | limitTo:entryLimit | findobj:multipleVlaue | searchFor:searchString"> <!-- searchFor:searchString --> 
              <td> 
               <input type="checkbox" ng-model="selctedIds[product.id]" ng-checked="product.deleted"> 
              </td> 
             </tr> 
            </tbody> 
           </table> 

コントローラ:あなたはなど複雑なフィルタリング、ページネーション、その後、私がお勧めのようなものを収納するスケーラブルな何かをしたい場合は

$scope.selectedAll = function() { 
    $scope.pagedItems.forEach(function (product) { 
     if ($scope.selectRowId) { 
      product.deleted = true; 
     } else { 
      product.deleted = false; 
     } 
    }); 
} 
+0

は '$ index'を使用してみてくださいng-repeat内の要素のインデックスを取得します。 '$ index'は実際には反復要素の反復子オフセット(0..length-1)です。 –

+0

私は試しましたが、選択されたIDを取得していません@ avantika-saini –

+0

plunkerで編集してください。 –

答えて

3

はあなたがそれぞれに角度財産を書きますオブジェクト。だから我々はそうのようなこのブール値を切り替えたいと思い、チェックボックスのために:あなたのトグルの

<input type="checkbox" ng-model="item.$selected"/> 

すべて/なしを、あなたはコントローラ機能をタップする必要があります:

$scope.toggleAll = function(bSelect){ 
    itemArray.forEach(function(item){ item.$selected = bSelect; }) 
} 

理由私はあなたの選択した値の前に、$selectedのような$を付けることをお勧めします。オブジェクトで行うHTTP呼び出しはすべて、$propertyを取り除き、バックエンドに問題がある場合に備えてJSONに変換します。

私はIDを引くためにフィルタを使用してお勧めします:

<div>{{ itemArray | getSelIds }}</div> 

とフィルタ

.filter('geSeltIds', function(){ 
    return function(items){ 
     //if you happen to use lodash 
     return _.chain(items).filter({$selected:true}).map('id').value() 

     //manual 
     ids = [] 
     items.forEach(function(item){ 
      if(item.$selected) 
       ids.push(item.id) 
     }) 
     return ids 
    } 
}) 
+0

あなたの提案に感謝します。 return _.chain(items).filter({$ selected:true})map( 'id') –

+0

lodashライブラリを使用する場合は、いくつかの関数を連鎖させることができます。これは単にitems配列を対象とし、$ selectedがtrueの配列をフィルタリングして渡し、フィルタされた項目のIDをマップします。 – jusopi

+3

あなたの要求を無視するのではなく、どうして私が正直に拒否しなければならないのかを説明します。 a)私は今仕事中に仕事を始めているので、あなたの事例を通して仕事をするのに十分な時間を費やすことができません。b)私は、自分の答えで提供されたツールとこれに関する他のツールを使って、ウェブサイトあなたが一度一緒につなぎ終えたら、あなたはよりよく理解し理解するでしょう。 – jusopi

0

このフィルターはきれいです:

.filter(function (item) { 
      return item.$selected; 
    }).map(function (item) { return item.id }); 
関連する問題