我有使用Angular应用程序显示的一系列对象ng- repeat。我正在使用filter和搜索输入的值过滤掉项目。它按预期工作。但是,我有一个“全部选中” /“全部取消选中”选项,我只想选择列表中的 可见 项(那些符合当前搜索条件的项)。
ng- repeat
filter
在控制器中不执行相同逻辑(即indexOf在每个对象上使用搜索值)的情况下,如何确定当前由ng-repeat/ 过滤掉的项目filter?
indexOf
ng-repeat
我的看法:
<input type="text" ng-model="searchValue"> <input type="checkbox" ng-model="checkAll" ng-change="toggleAll()"> <tr ng-repeat="item in items | filter:searchValue"> <td>{{item.id}}</td> <td>{{item.name}}</td> </tr>
我的控制器中的一个功能:
$scope.toggleAll() { for(var i in $scope.items){ // how can I tell if this item is filtered out in the view? } }
为了简化起见,我在这里大大简化了我的代码示例,因为这个问题不需要更多细节。有没有办法做我在想的还是我需要再次执行“搜索”?
您可以将过滤后的数组绑定到视图中的另一个作用域变量,然后在控制器中访问它。
视图:
<tr ng-repeat="item in filteredItems = (items | filter:searchValue)"> ... </tr>
控制器:
$scope.toggleAll = function () { angular.forEach($scope.filteredItems, function (item) { // do stuff }) }