Angularjs筛选并选中所有复选框
我有一个显示的项目数组Angularjs筛选并选中所有复选框,angularjs,Angularjs,我有一个显示的项目数组 <tr ng-repeat="i in items | filter:search_text" ...> 这些项目有一个复选框,表示“已选择”或“未选择”。 当我需要调用删除功能删除所有选定项目时,如何知道过滤器显示哪些项目 已选中(在复选框中选中)然后通过筛选隐藏的项目仍处于选中状态。我需要一种方法来知道当前屏幕上显示的是哪个项目。您可以使用$filter调用控制器中的过滤器 app.controller('MyCtrl', function($sco
<tr ng-repeat="i in items | filter:search_text" ...>
这些项目有一个复选框,表示“已选择”或“未选择”。
当我需要调用删除功能删除所有选定项目时,如何知道过滤器显示哪些项目
已选中(在复选框中选中)然后通过筛选隐藏的项目仍处于选中状态。我需要一种方法来知道当前屏幕上显示的是哪个项目。您可以使用$filter调用控制器中的过滤器
app.controller('MyCtrl', function($scope, $filter){
var filter = $filter('filter');
$scope.items = [/* your items here */]
$scope.selectAllFilteredItems = function (){
var filtered = filter($scope.items, $scope.search_text);
angular.forEach(filtered, function(item) {
item.selected = true;
});
};
});
然后,您可以在ng单击中调用
selectAllFilteredItems()
,或者在需要的任何地方调用。虽然不是非常完美,但它可以工作
在控制器中
var filter = $filter('filter');
$scope.item_ids = [];
$scope.selectAllFilteredItems = function (){
var filtered = filter($scope.items, $scope.searchText);
angular.forEach(filtered, function(item, key) {
if($scope.item_ids.indexOf(item.id) == -1){
$scope.item_ids.push(item.id);
$scope.items[key].selected = true;
}else{
$scope.item_ids.splice($scope.item_ids.indexOf(item.id),1);
$scope.items[key].selected = false;
}
});
};
然后,在表中有一个复选框可选择全部或取消全部选择
<table class='table table-striped'>
<tr>
<th><input type="checkbox" ng-click="selectAllFilteredItems()"></th>
</tr>
<tr ng-repeat="item in items | filter:searchText">
<td><input type="checkbox" ng-model="item.selected"></td>
</tr>
</table>
Thx,但我不确定我是否理解,搜索文本到哪里去了?你不是说forEach循环将被过滤吗?我将回答完全相同的=)这里有一个简单的提琴,提琴很棒!thx,但它缺乏检查哪些项目是实际选定的,Lol。。。谢谢@MarkRajcok。。。很明显,我今天的拼写错误太多了。如果选择一个元素后,其中一个元素会被取消选择呢?如何处理“全选”按钮的取消选择?