如何只获得angularjs中的选中复选框?

mik*_*kel 8 javascript angularjs

我有ng-repeated数据,我试图只获取用户选择的数据.我不知道怎么做,这就是我所拥有的:

HTML:

<div data-ng-controller="MyCtrl">
    <ul>
        <li data-ng-repeat="record in records">
            <input type="checkbox" ng-model="record.Id"> {{record.Id}}
        </li>
    </ul>
    <a href="javascript:;" data-ng-click="ShowSelected()">Show Selected</a>
</div>
Run Code Online (Sandbox Code Playgroud)

JS:

function MyCtrl($scope) 
{
    $scope.records = [ { "Id": 1 }, { "Id": 2 }, { "Id": 3 } ];
    $scope.ShowSelected = function() 
    {
        // how can I get only the selected records here ?
    }
}
Run Code Online (Sandbox Code Playgroud)

我确实以一种方式工作 - 通过向isSelected:false每个对象添加属性ng-model并将复选框更改为record.isSelected,我可以在ShowSelected函数中对其进行过滤.这似乎效率低下,我不想为模型添加额外的属性,如果可以避免它.

有没有更好的办法 ?

Tos*_*osh 12

JavaScript的

var app = angular.module('plunker', ['ui']);

app.controller('MyCtrl', function($scope) {
    $scope.records = [ { "Id": 1 }, { "Id": 2 }, { "Id": 3 } ];
    $scope.selected = {};
    $scope.ShowSelected = function() {
      $scope.records = $.grep($scope.records, function( record ) {
        return $scope.selected[ record.Id ];
      });
    };      
});
Run Code Online (Sandbox Code Playgroud)

HTML

<div data-ng-controller="MyCtrl">
    <ul>
        <li data-ng-repeat="record in records">
            <input type="checkbox" ng-model="selected[record.Id]"> {{record.Id}}
        </li>
    </ul>
    <a href="javascript:;" data-ng-click="ShowSelected()">Show Selected</a>
</div>
Run Code Online (Sandbox Code Playgroud)

http://plnkr.co/edit/lqtDQ6

您可以单独存储该标志并使用它来过滤数据.

因为一些CDN链接被破坏而更新了plunk.

  • 仅仅是一个似乎不能正常工作的异地资源并不是很好...... (7认同)