这是问题的摘要:我设置了一个列 sortChange() 侦听器,它通过触发查询以获取新排序的数据来响应排序更改。我在获取之前保存网格状态,并在获取之后恢复网格状态。问题是恢复gridState机制触发了原来的排序监听器,导致整个过程重新开始,一次又一次,一次又一次。
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 侦听器,但是这个解决方案看起来很难看,需要进入每个标题单元格模板并进行更改。