Получение выбранных строк из ng-grid?

Как создать (или получить доступ) массив выбранных строк в моей ng-grid?


Документация (прокрутите до параметров сетки)

id                 | default value | definition
-----------------------------------------------
selectedItems      |       []      | all of the items selected in the grid.
                                     In single select mode there will only
                                     be one item in the array.

index.html

<body ng-controller="MyCtrl">
    <div class="gridStyle" ng-grid="gridOptions"></div>

    <h3>Rows selected</h3>
    <pre>{{selectedItems}}</pre>
</body>

main.js

var app = angular.module('myApp', ['ngGrid']);
app.controller('MyCtrl', function($scope) {
    $scope.myData = [{name: "Moroni", age: 50},
                     {name: "Tiancum", age: 43},
                     {name: "Jacob", age: 27},
                     {name: "Nephi", age: 29},
                     {name: "Enos", age: 34}];
    $scope.gridOptions = { data: 'myData' };
});

Plnkr для кода (и для его запуска)


person Foo Stack    schedule 01.06.2013    source источник


Ответы (5)


Согласно документу, selectedItems должно быть свойством $scope.gridOptions, поэтому попробуйте следующее:

Контроллер

$scope.gridOptions = { data: 'myData', selectedItems: [] };

HTML

<pre>{{gridOptions.selectedItems}}</pre>
person Ye Liu    schedule 01.06.2013
comment
Спасибо, я думал, что это вариант по умолчанию; из-за того, что он имеет значение по умолчанию; Думаю, я не буду ожидать этого снова. Это работает :) - person Foo Stack; 01.06.2013

Вы можете получить выбранные элементы ng-grid 2.x из:

$scope.gridOptions.$gridScope.selectedItems
person ThanhHH    schedule 06.08.2014

В версии 3 вы можете сделать:

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

  $scope.gridApi = gridApi;
  $scope.mySelectedRows=$scope.gridApi.selection.getSelectedRows();
}

См. http://ui-grid.info/docs/#/api/ui.grid.selection.api:PublicApi для получения дополнительной информации.

person Ewald Stieger    schedule 27.11.2014
comment
У меня было несколько сеток на моей странице, и это, казалось, вызывало проблемы с настройкой $scope.mySelectedRows, даже с уникальными значениями, я не уверен, почему, поскольку это должно работать нормально. Однако я все еще мог добраться до каждой сетки, используя $scope.uniqueGridApi.selection.getSelectedRows(). - person JabberwockyDecompiler; 14.04.2015

В версии 3.0 вы можете захватывать строки по мере их выбора следующим образом:

$scope.gridOptions.onRegisterApi = function(gridApi){
  //set gridApi on scope
  $scope.gridApi = gridApi;
  gridApi.selection.on.rowSelectionChanged($scope,function(row){
    var msg = 'row selected ' + row.isSelected;
    $log.log(msg);
  });
};

Подробнее здесь: http://ui-grid.info/docs/#/tutorial/210_selection

person genegc    schedule 05.10.2014
comment
Хотя это приемлемое решение, я предпочитаю ответ от Ewald Stieger, потому что в нем меньше кода, который нужно поддерживать. - person JabberwockyDecompiler; 14.04.2015

Я пытаюсь прочитать список выбранных строк в данный момент. Опция, кажется, переехала, теперь я могу найти это в:

$scope.gridOptions.ngGrid.config.selectedItems

Кажется, только для чтения

person PaulL    schedule 18.07.2014
comment
Это было спасением для меня. Свойство selectedItems, которое я пытался установить, не работало — это работает! - person udog; 20.02.2015