Где я могу выбрать Angular выбранные элементы ui-grid
Тестирование Angular ui-grid (ng-grid v.3.0). Невозможно, чтобы жизнь меня находила выбранную строку. Я просто хочу захватить строки или даже строку ID строки, когда пользователь нажимает на нее. Нашел верхний комментарий здесь, но я думаю, что это устарело: Получение строк выбора из ng-сетки?
Кто-нибудь знает, где gridOptions.selectedItems
хранится в версии 3.0?
Ответы
Ответ 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);
Используйте массив вместо простого объекта, если вам нужен множественный выбор.