2016-09-19 1 views
1

Ich habe eine Fabrik, die eine SubCon $ Ressource für eine erholsame API erstellt.

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

Ich habe einen Controller bekam, die diesen Dienst verwendet, und geht direkt das Versprechen zurück durch den Dienst zu einem ng-repeat abfragt. Hier

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

ist die Wiederholung in der Vorlage:

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

Dies funktioniert gut und gibt, was ich erwarte. So haben wir eine Politik gegen die Verwendung von $ scope so dass ich den Controller und Vorlage wie folgt Refactoring:

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

Und die Vorlage:

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

wenn ich diesen Code mit Winkel 1.5.8 Ich betreibe Erhalte einen Digest-Fehler, wie unten zu sehen ist.

Also was fehlt mir. Warum funktioniert das mit $ scope und ohne eine Methode auf dem Controller?

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 

Antwort

1

ersetzen $scope.partners = this.SubCon.query(); von this.partners = this.SubCon.query();

Dann können Sie in der Regel eine Sammlung passieren ng-repeat:

<tr ng-repeat="partner in ctrl.partners">