Angular ui grid 如何在初始化期间恢复网格状态?

Angular ui grid 如何在初始化期间恢复网格状态?,angular-ui-grid,Angular Ui Grid,我有一个有角度的UI网格,用户可以通过单击列标题来更改排序顺序。我想在用户离开控制器时保留用户的选择,并在用户返回控制器时恢复选择的排序顺序。UI网格有saveState模块,所以当用户离开控制器时,我使用它来保存状态 问题是我无法还原此已保存状态。何时调用saveState.restore()?如果我在onRegisterApi中调用它,那么它就不起作用了,因为还没有构造列。我在用数据填充网格之后才调用它 $scope.loadData = function () { $q.all([

我有一个有角度的UI网格,用户可以通过单击列标题来更改排序顺序。我想在用户离开控制器时保留用户的选择,并在用户返回控制器时恢复选择的排序顺序。UI网格有saveState模块,所以当用户离开控制器时,我使用它来保存状态


问题是我无法还原此已保存状态。何时调用saveState.restore()?如果我在onRegisterApi中调用它,那么它就不起作用了,因为还没有构造列。

我在用数据填充网格之后才调用它

$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 = [];
        });
};
你可以这样试试

$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
    };

这样做的问题是,恢复状态可能会定义用户特定的排序-这将再次调用服务器以获取基于该排序的数据。在检索数据之前,需要有一种恢复状态的方法,然后根据排序检索数据。这个问题有什么解决方案吗?我认为您可以随时检索您的状态数据,并使用它来设置自定义排序。然后稍后调用网格的恢复。我敢肯定它只是设置了它的网格视图(设置了正确的方向箭头等),您可能需要检查排序更改事件,以便在排序相同时不使用列表。这非常有用,谢谢!