2016-09-19 4 views
1

У меня есть фабрика, которая создает ресурс SubCon $ для спокойного api.

app.factory("SubCon", function($resource) { 
    return $resource("http://localhost:8010/api/subcontractors/:id"); 
}) 

У меня есть контроллер, который использует эту услугу, и непосредственно передает обещание, возвращенное запрашивая службу к нг-повтора.

//in the controller 
$scope.partners = this.SubCon.query(); 

Вот повторение в шаблоне:

<tr ng-repeat="partner in partners"> 
    <td>{{partner.id}}</td> 
    <td>{{partner.name}}</td> 
    <td>?</td> 
    <td>?</td> 
    <td>---</td> 
    <td>?</td> 
</tr> 

Это прекрасно работает и выдает то, что я ожидал. Таким образом, мы имеем политику против использования $ сферы, так что я переработан контроллер и шаблон:

//in the controller 
this.getPartners = function() { 
    return this.SubCon.query(); 
} 

и шаблон:

<tr ng-repeat="partner in ctrl.getPartners()"> 
    <td>{{partner.id}}</td> 
    <td>{{partner.name}}</td> 
    <td>?</td> 
    <td>?</td> 
    <td>---</td> 
    <td>?</td> 
</tr> 

Теперь, когда я запускаю этот код, используя угловую 1.5.8 I получите ошибку дайджеста, как показано ниже.

Так что мне не хватает. Почему это работает с $ scope и не использует метод на контроллере?

angular.js:13920 Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting! 
Watchers fired in the last 5 iterations: [] 
http://errors.angularjs.org/1.5.8/$rootScope/infdig?p0=10&p1=%5B%5D 
    at angular.js:68 
    at Scope.$digest (angular.js:17562) 
    at Scope.$apply (angular.js:17790) 
    at done (angular.js:11831) 
    at completeRequest (angular.js:12033) 
    at XMLHttpRequest.requestLoaded (angular.js:11966)(anonymous function) @ angular.js:13920 
angular.js:17793 Uncaught Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting! 
Watchers fired in the last 5 iterations: [] 
http://errors.angularjs.org/1.5.8/$rootScope/infdig?p0=10&p1=%5B%5D 

ответ

1

Заменить $scope.partners = this.SubCon.query(); на this.partners = this.SubCon.query();

Затем вы можете передать коллекцию нормально нг-повторить:

<tr ng-repeat="partner in ctrl.partners"> 
Смежные вопросы