无法设置属性' grid'未定义的

时间:2015-02-08 23:24:48

标签: javascript angularjs bower ng-grid

我是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”

2 个答案:

答案 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将被绑定并被观看。如果更改了对象的属性,则将更新视图。