Где я могу получить угловые UI-grid выбранные элементы

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

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

4 ответов


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

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

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

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

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

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


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

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

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

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

    $scope.myGridApi.selection.getSelectedRows();


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

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);

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