我是angular和ng-grid的新手,我正在调用一个简单的静态json文件,但网格根本没有显示,我得到的消息是:
无法设置未定义的属性'grid'
有人可以帮忙吗?
我的代码看起来像这样
angular.module('healthyLivingApp')
.controller('SubscribersCtrl', function ($scope,$http) {
$http.get('http://localhost:9000/subscribers.json').success(function(data){
$scope.subscribers = data;
});
$scope.gridOptions = {
data:'subscribers'
}
});
app.js
.module('healthyLivingApp', [
'ngAnimate',
'ngResource',
'ngRoute',
'ngSanitize',
'ngTouch',
'ngGrid',
'ui.bootstrap'
])
HTML
<h1>Subscribers</h1>
<div class="gridStyles" ng-grid="gridOptions">
</div>
我正在使用bower,Angular“1.3.12”,ng-grid“”2.0.14“”,jQuery“2.1.3”
答案 0 :(得分:0)
控制器中存在异步任务
$http.get('http://localhost:9000/subscribers.json').success(function(data){
$scope.subscribers = data;
});
当你的控制器完成初始化并且Angular开始渲染DOM时,这个异步还没有完成,这意味着$scope.subscribers
仍未定义。您已声明ng-grid
应从subscribers
$scope.gridOptions = {
data:'subscribers'
}
因此,正确的解决方案是在控制器顶部定义$scope.subscribers
angular.module('healthyLivingApp')
.controller('SubscribersCtrl', function ($scope,$http) {
$scope.subscribers = [];
$http.get('http://localhost:9000/subscribers.json').success(function(data){
$scope.subscribers = data;
});
$scope.gridOptions = {
data:'subscribers'
};
});
答案 1 :(得分:0)
我认为这是关于数据绑定策略的。
在视图中,如果绑定某些数据,它将与引用绑定。在您的代码中,视图将与$ scope中的subscribers
绑定。但是你更新了控制器中的引用,然后获得了数据。
因此,尝试与someObjName.subscribers
绑定。然后someObjName
将被绑定并被观看。如果更改了对象的属性,则将更新视图。