Angularjs处理没有$ scope

时间:2016-09-19 18:50:48

标签: javascript angularjs promise

我有一个工厂为restful api创建一个SubCon $资源。

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

我有一个使用该服务的控制器,并直接将通过查询服务返回的承诺传递给ng-repeat。

//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>

这很有效,可以输出我的期望。 所以我们有一个反对使用$ scope的策略,所以我重构了这样的控制器和模板:

//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>

现在当我使用angular 1.5.8运行此代码时,我得到一个摘要错误,如下所示。

所以我错过了什么。为什么这适用于$ 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 个答案:

答案 0 :(得分:1)

$scope.partners = this.SubCon.query();替换为this.partners = this.SubCon.query();

然后你可以将一个集合正常传递给ng-repeat:

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