我试图在我的angular应用程序中使用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;
}
};这是我通过http调用得到的响应。具有讽刺意味的是,当我从另一个控制器调用它时,相同的代码段可以工作,但在这个控制器上失败。
发布于 2017-08-20 07:39:10
由于您没有发布填充数据的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,您的网格也将得到通知和更新。
https://stackoverflow.com/questions/45656749
复制相似问题