Я не могу заставить выбрать первую строку после применения фильтра. Поэтому, когда я загружаю свою страницу для выбора первого ряда, я использую:выберите первую видимую строку после фильтра ui-grid
gridApi.selection.selectRow($scope.gridOptions.data[0]);
это из документации по API, и это понятно. Теперь я пытаюсь выбрать первую строку после фильтра. У меня есть singleFilter функция, которая приходит из официальной документации
$scope.singleFilter = function(renderableRows){
var matcher = new RegExp($scope.filterValue);
renderableRows.forEach(function(row) {
var match = false;
[
'name', 'company', 'email'
].forEach(function(field){
if (field.indexOf('.') !== '-1') {
field = field.split('.');
}
if (row.entity.hasOwnProperty(field) && row.entity[field].match(matcher) || field.length === 2 && row.entity[field[0]][field[1]].match(matcher)){
match = true;
}
});
if (!match){
row.visible = false;
}
});
var rows = $scope.gridApi.core.getVisibleRows();
var first = function(array, n) {
if (array == null){
return void 0;
}
if (n == null) {
return array[0];
}
if (n < 0) {
return [];
}
return array.slice(0, n);
};
console.log(first(rows))
$scope.gridApi.selection.selectRow(first(rows));
return renderableRows;
};
где я получаю длину видимых строк
var rows = $scope.gridApi.core.getVisibleRows();
через простой скрипт, я получаю первую строку
var first = function(array, n) {
if (array == null){
return void 0;
}
if (n == null) {
return array[0];
}
if (n < 0) {
return [];
}
return array.slice(0, n);
};
console.log(first(rows))
тогда я пытаясь применить выбор
$scope.gridApi.selection.selectRow(first(rows));
Но, к сожалению, успеха нет. Где моя ошибка? Я ценю любую помощь. My plunker
Вау !, работает как волшебство, спасибо за ваше описание, я ценю это! – Anton