2015-06-19 39 views
0

我想在創建控制器時加載UI網格的最後一個狀態。 我已經設置了一個plunkr。 http://plnkr.co/edit/cOhLUUABVStfoTH6QVZd?p=preview 在我的控制器中,我使用了一個restoreOnLoad函數,該函數在控制器的末尾立即調用。我得到一個TypeError:無法讀取未定義的屬性'saveState',因爲在控制器創建時gridApi未定義。控制器創建時角UI網格加載狀態

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(); 

任何想法如何避免這個錯誤?

回答

0

您的恢復調用在網格的API註冊之前運行,因此您只需等待發生這種情況。

您可以將restoreOnLoad()呼叫轉移到你的onRegisterApi處理程序:

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

如果在onRegisterApi回調調用restoreOnLoad,會不會它運行後* *呈現的網格。換句話說,直到網格變得可見爲止,該回調函數纔會被調用....所以不會導致雙重繪製?在「默認」狀態下繪製網格,然後在還原後再次繪製網格? – Jason

相關問題