Подтвердить что ты не робот

Где я могу выбрать Angular выбранные элементы ui-grid

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

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

4b9b3361

Ответ 1

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

  • Активируйте возможности выбора сетки с помощью тега ui-grid-selection (и регистрации модуля ui.grid.selection в вашем приложении
  • register gridApi и используйте gridApi.selection для доступа к getSelectedRows()

Ответ 2

В дополнение к шагам выше fooobar.com/questions/152193/... вам может потребоваться вызвать его через событие ng-click, чтобы получить фактическое значение/объект. По крайней мере, как я работал.

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

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

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

Ответ 3

Самый простой способ:

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

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

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

    $scope.myGridApi.selection.getSelectedRows();

Ответ 4

С сеткой 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);

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