Angular событие ui-grid: выбранная строка

Я пытаюсь включить/отключить кнопку, основанную на выборе строки на ui-grid. Если выбранных строк нет, кнопка отключается.

Я нашел этот plunkr со старым способом ng-grid для запуска события после выбора строки.

  $scope.gridOptions = { 

  data: 'myData', 
  selectedItems: $scope.selections,
  enableRowSelection: true,

  afterSelectionChange:function() {
        if ($scope.selections != "" ) {
            $scope.disabled = false;
        } else {
            $scope.disabled = true;
        }
  }
};

К сожалению, это не работает, и я не нашел признаков такого события в документации по ui-grid .

Как я могу добиться этого с помощью ui-grid?

Ответы

Ответ 1

В ui-grid вы регистрируете функцию обратного вызова в событии "rowSelectionChanged"

 $scope.gridOptions.onRegisterApi = function (gridApi) {
                $scope.gridApi = gridApi;
                gridApi.selection.on.rowSelectionChanged($scope, callbackFunction);
                gridApi.selection.on.rowSelectionChangedBatch($scope, callbackFunction);
            }
 }

Я думаю, вам стоит взглянуть на страницу учебника в ui-grid: http://ui-grid.info/docs/#/tutorial/210_selection. Страница API отстой, на мой взгляд: (.

Ответ 2

вы можете сначала получить все записи, выбранные в grid в настоящее время, выполнив:

$scope.rowsSelected = $scope.gridApi.selection.getSelectedRows();

теперь мы можем получить длину этого массива, используя:

$scope.countRows = $scope.rowsSelected.length;

на основе $scope.countRows>0 или 0 вы можете включить или отключить кнопку, используя

ng-disabled = "countRows"

Ответ 3

   $scope.countRows=0;

    $scope.gridOptions.onRegisterApi = function(gridApi){

       $scope.gridApi = gridApi;

       gridApi.selection.on.rowSelectionChanged($scope, function(row){ 
        $scope.countRows = $scope.gridApi.selection.getSelectedRows().length;
        });

       gridApi.selection.on.rowSelectionChangedBatch($scope, function(row){ 
        $scope.countRows = $scope.gridApi.selection.getSelectedRows().length;
        });
    }; 

На стороне HTML вы можете использовать что-то вроде этого

    <button class="custom-button" ng-disabled="countRows<=0" ng-click="submit()">Details</button>