2014-10-04 2 views
35

Тестирование Угловая ui-сетка (ng-grid v.3.0). Невозможно, чтобы жизнь меня находила выбранную строку. Я просто хочу захватить строки или даже строку ID строки, когда пользователь нажимает на нее. Нашел верхний комментарий здесь, но я думаю, что это устарело: Getting select rows from ng-grid?Где я могу получить угловые ui-сетки выбранных предметов

Кто-нибудь знает, где gridOptions.selectedItems хранится в версии 3.0?

ответ

34

Это ваш то, что вы ищете? http://ui-grid.info/docs/#/tutorial/210_selection

  1. возможности выбора Activate сетки с тегом UI-сетки выбора (и регистрации модуля ui.grid.selection в приложении
  2. регистр gridApi и использовать gridApi.selection для доступа getSelectedRows()
23

в дополнение к указанным выше https://stackoverflow.com/a/26188783/2658127 шагов, вы, возможно, придется вызвать его через событие нг-клик, чтобы получить фактическое значение/объект. по крайней мере, как я имел это работает.

Eg: 
$scope.selectRow = function(){ 
    $scope.gridApi.selection.getSelectedRows(); 
}; 

И вызвать selectRow() из шаблона.

Это для всех, кто был смущен, как и я, учитывая тот факт, что ui-grid не имеет лучшей документации (специально для этой части выбора).

+1

Спасибо Раджуш, я ценю дополнительную информацию! – Mlalahoi

0

С сеткой ui вы должны использовать selection.on.rowSelectionChanged для обновления переменной области, в которой хранится выбранный элемент. Таким образом вы можете использовать значение в выражении привязки.

var SelectController = function($scope) { 
    ... 
    $scope.selectedItem = null; 

    $scope.gridOptions = { 
      data : 'articles', 
      enableRowSelection : true, 
      multiSelect : false, 
      enableRowHeaderSelection : false, 
      ... 
     }; 

     $scope.gridOptions.onRegisterApi = function(gridApi) { 
      // set gridApi on scope 
      this.$scope.gridApi = gridApi; 
     }.bind(this); 
     $scope.gridOptions.onRegisterApi = function(gridApi) { 
      // set gridApi on scope 
      this.$scope.gridApi = gridApi; 
      this.$scope.gridApi.selection.on.rowSelectionChanged($scope, 
        function(row) { 
         this.$scope.selectedItem = row.entity; 
        }.bind(this)); 
     }.bind(this); 

Используйте массив вместо простого объекта, если вам нужен множественный выбор.

15

Самый простой подход:

  1. Зарегистрируйте gridApi, добавив этот контроллер:

    $scope.gridOptions.onRegisterApi = function(gridApi) { $scope.myGridApi = gridApi; };

  2. Доступ массив выбранных элементов:

    $scope.myGridApi.selection.getSelectedRows();

Смежные вопросы