初始化时如何恢复网格状态?

How to restore grid state during initialization?

我有 Angular UI 网格,用户可以在其中通过单击列 headers 更改排序顺序。我想在用户离开控制器时保留用户的选择,并在用户 returns 返回控制器时恢复选择的排序顺序。 UI Grid 有 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
    };