是否有办法限制ng-grid中选定项目的数量?
我没有找到设置来做到这一点,所以我试图在gridOptions.selectedItems
中使用watchCollection
来阻止它。
当selectItems
的length
大于5时,我尝试取消选择最后一个选择,但不像预期的那样工作,因为项目行索引似乎与呈现的不同:
这是监视程序代码:
$scope.$watchCollection('gridOptions.selectedItems', function (newVal, oldVal) {
if ($scope.gridOptions.selectedItems.length > 5) {
for (var i = 0; i < $scope.importableFilesData.length; i++) {
if ($scope.importableFilesData[i] === newVal[0]) {
$scope.gridOptions.selectRow(i, false);
}
}
}
用这种方法检查您的状况。你不需要搜索最后选择的行你可以直接取消选择。我已经测试过了,它是这样工作的。
$scope.yourGridApi.selection.on.rowSelectionChanged($scope,function(row){
if($scope.yourGrid.gridOptions.selectedItems.length>=5){
row.isSelected = false;
}
});
我找到了一个使用beforeSelectionChange
属性的解决方案。此属性允许您设置每次选中一行时触发的回调。如果返回false
,选择将被取消。
$scope.gridOptions = {
// your grid options ...
beforeSelectionChange: function (row) {
if ($scope.gridOptions.selectedItems.length > 5) {
return false;
}
return true;
}
}