2017-08-13 62 views
0

我想使用的用戶界面電網從我的角度應用程序,但我得到以下錯誤:13920類型錯誤:在Object.invoke

:無法讀取性能在新 (3332 UI-grid.js)的未定義的「數據」
TypeError: Cannot read property 'data' of undefined 
    at new <anonymous> (ui-grid.js:3332) 
    at Object.invoke (angular.js:4718) 
    at S.instance (angular.js:10354) 
    at p (angular.js:9263) 
    at angular.js:9673 
    at angular.js:16383 
    at m.$eval (angular.js:17682) 
    at m.$digest (angular.js:17495) 
    at m.$apply (angular.js:17790) 
    at l (angular.js:11831) 

HTML:

<div ui-grid="gridOptionsGeneral" class="myGrid"></div> 

JS:這裏

$scope.gridOptionsGeneral = {}; 
      $scope.gridOptionsGeneral = { 
       enableFiltering: true, 
       data: res, 
       columnDefs: [ 
        { field: 'Col1' }, 
        { field: 'Col2' }, 
        { field: 'Col3' }, 
        { field: 'Col4' }, 
        { field: 'Col5', enableFiltering: false}, 
        { field: 'data1', enableFiltering: false}, 
        { field: 'data2', enableFiltering: false}, 
        { field: 'data3', enableFiltering: false} 
       ], 
       onRegisterApi: function (gridApi) { 
        $scope.gridApi = gridApi; 
       } 
      }; 

水庫是我得到的迴應通過http調用。具有諷刺意味的是,當我從另一個控制器調用它時,同一段代碼工作正常,但是此控制器失敗

+0

數據綁定發生在您的http調用返回之前,導致它綁定到'res = null'。 – KreepN

+0

那麼我們如何確保在http調用之後發生數據綁定? –

回答

0

既然你不發表您的httpget用於填充數據,你將不得不修改我的回答,以適應你的代碼:

$scope.res = []; 
$scope.gridOptionsGeneral = {}; 
$scope.gridOptionsGeneral = { 
    enableFiltering: true, 
    data: $scope.res, 
    columnDefs: [ 
    { field: 'Col1' }, 
    { field: 'Col2' }, 
    { field: 'Col3' }, 
    { field: 'Col4' }, 
    { field: 'Col5', enableFiltering: false}, 
    { field: 'data1', enableFiltering: false}, 
    { field: 'data2', enableFiltering: false}, 
    { field: 'data3', enableFiltering: false} 
    ], 
    onRegisterApi: function (gridApi) { 
     $scope.gridApi = gridApi; 
    } 
}; 


$http.get(url, config) 
.then(
    function(response){ 
     //success call 
     $scope.res = response.data; 
    }, 
    function(response){ 
    // failure call back 
    } 
); 

以上將定義資源作爲一個空數組,這將導致目前的代碼顯示一個空網格。通過在作用域上有res變量,它將被監視以進行更改。當httpget完成時,成功電話被解僱並重新綁定$scope.res,並且您的電網也將被通知和更新。