控制器创建时的角度 - 网格负载状态

时间:2015-06-19 08:05:12

标签: angular-ui-grid

我想在创建控制器时加载ui-grid的最后一个状态。 我设了一个傻瓜。 http://plnkr.co/edit/cOhLUUABVStfoTH6QVZd?p=preview 在我的控制器中,我使用了restoreOnLoad函数,该函数在控制器的末尾立即调用。我得到一个TypeError:无法读取属性' saveState'未定义,因为在创建控制器时gridApi未定义。

restoreOnLoad = function(){
  //retrieve stateinfo. For simplicity: inline object...
  var stateInfo = {
    "columns": [
        {
            "name": "",
            "visible": true,
            "width": 50,
            "sort": {
                "direction": "asc",
                "priority": 0
            },
            "filters": [
            ]
        },
        {
            "name": "M",
            "visible": true,
            "width": 50,
            "sort": {
            },
            "filters": [
            ]
        },
        {
            "name": "Company",
            "visible": true,
            "width": 200,
            "sort": {
            },
            "filters": [
            ]
        }
    ],
    "scrollFocus": {
    },
    "selection": {
    }
  }
  $scope.gridApi.saveState.restore($scope, stateInfo);
}

restoreOnLoad();

任何想法如何避免此错误?

1 个答案:

答案 0 :(得分:0)

您的恢复呼叫在网格API注册之前正在运行,因此您只需要等待它发生。

您可以将restoreOnLoad()来电转移到onRegisterApi处理程序:

vm.gridOptions = {
  onRegisterApi: function (gridApi) {
    $scope.gridApi = gridApi;
    restoreOnLoad();
  }
}