如何重置(不恢复)网格状态?

时间:2015-11-18 22:25:29

标签: angular-ui-grid

我有以下plunker使用save / restore和localStorage: http://plnkr.co/edit/Ad12QG1uKFEf38aOtpaL?p=preview

我可以保存网格状态,调整一些列(如列调整大小,移动等),然后恢复到保存的网格状态就好了。

一旦我保存了它,我将如何进行"重置"功能工作?我想在保存更改之前将其重置为网格的默认状态。

我的尝试到目前为止还没有成功。我假设我会在恢复发生之前尝试保存加载时的默认状态...

onRegisterApi: function(gridApi) {
  $scope.gridApi = gridApi;
  $scope.defaultState = $scope.gridApi.saveState.save();
  ...

...然后恢复类似于$ scope.restoreState函数...

$scope.resetState = function() {
  $scope.gridApi.saveState.restore($scope, $scope.defaultState);
}

......但那会引发错误。

1 个答案:

答案 0 :(得分:1)

我能够让它发挥作用。这是一个有效的例子: http://plnkr.co/edit/Ad12QG1uKFEf38aOtpaL?p=preview

我采用了我在问题中概述的相同方法,但是我必须将defaultState包装在$ timeout()中,因为在没有超时的情况下,onRegisterApi中的状态不会立即可用。我确保在restoreState超时之前发生它。

onRegisterApi: function(gridApi) {
  $scope.gridApi = gridApi;

  $timeout(function() {
    $scope.defaultState = $scope.gridApi.saveState.save();
  }, 50);

  $timeout(function() {
    $scope.restoreState();
  }, 100);
},

我对角度还不熟悉,所以我确信有人可以改善它。