Вот краткий обзор проблемы: я настроил столбец sortChange(), который реагирует на изменения сортировки, отключив запрос, чтобы получить новые отсортированные данные. Я сохраняю состояние сетки перед извлечением и восстанавливаю состояние сетки после извлечения. Проблема в том, что механизм gridState восстановления запускает первоначальный прослушиватель сортировки, заставляя весь процесс запускаться снова и снова и снова.UI-grid saveState сервисная круговая логика
scope.sitesGrid.onRegisterApi = function(gridApi) {
scope.gridApi = gridApi;
scope.gridApi.core.on.sortChanged(scope, function() {
// load new sites on a sort change
scope.initialize();
});
};
scope.initialize = function() {
// save current grid state
scope.gridApi && (scope.gridState = scope.gridApi.saveState.save());
fetchSites().then(function (sites) {
scope.sitesGrid.data = sites
// restore current grid state, but inadvertently retrigger the 'sortChanged' listener
scope.gridApi.saveState.restore(scope,scope.gridState);
})
};
Я думал, что я мог бы создать щелчок слушатель на каждом заголовке столбца, вместо того, чтобы использовать слушатель sortChange, однако это решение кажется некрасиво и требует выхода в каждый шаблон заголовок ячейки и внесение изменений.