我的ngGrid上有一个Select all
复选框,效果很好,但我有一种情况,当某些条件存在时,我不希望选择特定的行。因此,如果我单击选择全部它应该选择除检查失败的所有选项。这就是我的想法:
$scope.gridOptions.beforeSelectionChange = function (rowItem, event) {
angular.forEach(rowItem, function(item) {
if (item.entity.status == 'Accepted') {
item.selected = false;
} else {
item.selected = true;
}
});
}
但这似乎不起作用。我该如何实现这一目标?我也试过了afterSelectionChange
。我看到数据(selected
属性)发生了变化,但选择没有改变。
select all
按钮不是我添加的内容。当您启用复选框时,这是ngGrid附带的复选框 - 标题中的复选框。
答案 0 :(得分:2)
您应该可以使用$scope.gridOptions.selectItem(index, true);
请参阅plunkr示例:http://plnkr.co/edit/BffRURwCX7pkNcEo0x6C?p=preview
编辑:
好的,我现在看到你需要什么。您可以覆盖CheckboxHeaderTemplate
并将其绑定到其他功能。
$scope.gridOptions = { data: 'myData',
showSelectionCheckbox: true,
checkboxHeaderTemplate: '<input class="ngSelectionHeader" type="checkbox" ng-show="multiSelect" ng-model="allSelected" ng-change="selectAll(allSelected)"/>'
}
将selectAll定义为:
$scope.selectAll = function(selectAll) {
angular.forEach($scope.myData, function(data, index){
if (!selectAll) {
$scope.gridOptions.selectItem(index, false);
return;
}
if(data.status != 'Accepted'){
$scope.gridOptions.selectItem(index, true);
}
});
}