Мне нужно значение index/index для выбранной строки в ui-grid. Я попытался получить его, используя событие onRowSelectionChange. Но он не смог его получить.
Может ли кто-нибудь иметь представление об этом?
В наши дни может быть более элегантное решение, но в версии ui-grid, с которой я работал несколько месяцев назад, я использовал следующую служебную функцию, чтобы получить индекс строки.
getRowIndex: function (row, grid) {
var rowIndex = -1;
for (var i = 0; i < grid.renderContainers.body.visibleRowCache.length; i++) {
if (row.uid === grid.renderContainers.body.visibleRowCache[i].uid) {
rowIndex = i;
break;
}
}
return rowIndex;
}
Вы можете получить ссылку на строку из многих событий, включая событие rowSelectionChanged
.
Чтобы получить ссылку на сетку...
$scope.gridOptions.onRegisterApi = function (gridApi) {
$scope.gridApi = gridApi;
}
И позвоните
var myIndex = myService.getRowIndex(row, $scope.gridApi.grid);
Обратите внимание, что этот индекс изменяется при повторной сортировке или изменении данных. Он основан на индексе данных, как видит пользователь.
В контроллере grid_options
:
onRegisterApi: function(gridApi) {
$scope.gridApi = gridApi;
gridApi.selection.on.rowSelectionChanged($scope,function(row){
var removeRowIndex = $scope.grid_Options.data.indexOf(row.entity);
});
}
$scope.grid_Options.data
- это фактически данные, которые вы предоставили сетке.