我有Angular UI Grid,用户可以通过单击列标题来更改排序顺序。我想在用户离开控制器时保留用户的选择,并在用户返回控制器时恢复所选的排序顺序。 UI Grid有saveState模块,因此当使用离开控制器时,我用它来保存状态。
问题是我无法恢复这个保存状态。我什么时候应该调用saveState.restore()?如果我在onRegisterApi中调用它,那么它不起作用,因为列尚未构建。
答案 0 :(得分:3)
你可以试试这种方式
$scope.gridOptions = {
exporterMenuCsv: false,
enableGridMenu: true,
enableColumnResizing: true,
enableFiltering: true,
saveVisible: true,
saveOrder: true,
onRegisterApi: function (gridApi) {
$scope.gridApi = gridApi;
$timeout(function () {
$scope.restoreState(); //call my restore function
}, 100);
},
data: $scope.bookings
};
答案 1 :(得分:1)
在我用数据填充网格之后,我就打电话给它。
$scope.loadData = function () {
$q.all([
myDataLoaderFunction.$promise
])
.then(function (data) {
$scope.gridOptions.data = data[0];
var savedState = SomeServiceThatIStoredMyStateInto.getSavedGridState();
if (savedState) {
$scope.gridApi.saveState.restore($scope, savedState);
}
}, function () {
$scope.gridOptions.data = [];
});
};