限制 ng-grid 中所选项目的数量

Limit number of selected items in ng-grid

有没有办法限制在 ng-grid 中选择的项目数?

我没有找到 设置 来执行此操作,因此我试图使用 gridOptions.selectedItems 中的 watchCollection 来阻止它。

selectItemslength 大于 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 属性 的解决方案。 属性 让您可以设置每次选择一行时触发的回调。如果你的returnfalse,选择将被取消

$scope.gridOptions = {
  // your grid options ... 

  beforeSelectionChange: function (row) {
    if ($scope.gridOptions.selectedItems.length > 5) {
      return false;
    }
    return true;
  }

}