2015-02-08 1 views
0

Я новичок в угловой и ng-сетке, я называю простой статический файл json, но сетка вообще не отображается, сообщение, которое я получаю:Невозможно установить свойство «сетка» неопределенного

Невозможно установить свойство «сетка» неопределенной

Может кто-нибудь помочь?

Мой код выглядит следующим образом

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> 

Я использую беседку, Угловое "1.3.12", нг-сетка " "2.0.14"", JQuery "2.1.3"

+0

Это работает для меня, в каком порядке ваши угловые/nggrid и jquery-скрипты загружены в ваш html? Кроме того, что именно возвращает абонент.json? Смотрите: http://plnkr.co/edit/ersNjlKz4xjlmoIGgUli?p=preview –

+0

возвращает простой объект, подобный этому [ {"no": "1", "name": "Betty", "loyalty": 3, " joinDate ":" 3/5/10 "," userType ":" Free "}, {" no ":" 2 "," name ":" John "," loyalty ": 5," joinDate ":" 3/5/05 "," userType ":" Premium "}, {" no ":" 3 "," name ":" Peter "," loyalty ": 6," joinDate ":" 3/5/10 " , «userType»: «Free»} ] – rolando

+0

Он показывает данные, но не сетку – rolando

ответ

0

Существует асинхронная задача в контроллере

$http.get('http://localhost:9000/subscribers.json').success(function(data){ 
    $scope.subscribers = data; 
}); 

Когда контроллер завершает инициализацию и угловые начинает оказывать 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' 
     }; 
    }); 
+0

В файле css отсутствует '' 'ng-grid.min.css''', поскольку теперь у вас есть приложение, работающее с yo, иногда происходит много, я пропускаю это (извините что), однако коносел все еще показывает ту же ошибку, даже если я попробуйте свое решение, не знаете, что пытается сказать – rolando

+0

@rolando. Ваша проблема аналогична [этой] (http://stackoverflow.com/questions/24082380/ng-grid-cannot-set-property- griddim-of-undefined), чтобы вы могли взглянуть на него. Я полагаю, что мое решение может решить вашу проблему, потому что я могу успешно создать образец ng-grid. – Rebornix

+0

Я прочитал, что перед тем, как задать вопрос, по-видимому, его проблема заключалась в том, что он определил область gridOptions внутри вызова succes, которого я не сделал, если вы посмотрите на этот плунжер, сделанный @Nicholas Smith 12 http://plnkr.co/edit/ersNjlKz4xjlmoIGgUli? p = preview, сетка показывает, даже если вы выберете $ scope.subscribers = []; но по какой-то причине я могу получить «Не могу установить свойство« сетка »неопределенного в моем приложении – rolando

0

Я думаю, что речь идет о данных политики связывания.

В представлении, если вы привязываете некоторые данные, он связывается со ссылкой. В вашем коде представление будет связываться с subscribers в области $ scope. Но вы обновляете ссылку в своем контроллере, а затем получаете данные.

Итак, попробуйте связать с someObjName.subscribers. Затем someObjName будет связываться и наблюдаться. Если атрибут объекта изменен, представление будет обновлено.