我正在尝试使用我的角度应用程序中的UI网格,但我收到以下错误:
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;
}
};
此处res是我通过http呼叫获得的响应。具有讽刺意味的是,当我从另一个控制器调用它时,同一段代码可以正常工作,但是对于这个控制器来说却失败了
答案 0 :(得分: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定义为空数组,这将导致当前代码显示空网格。通过在范围上使用res
变量,将监视更改。当httpget
完成后,成功调用将被触发并重新绑定$scope.res
,您的网格也会得到通知和更新。