我有角度控制器,看起来像这样:
app.controller('AppCtrl', function ($scope, serverData) {
$scope.playersData = function() {
var players = [],
listed = [], name;
serverData.forEach(function(result) {
name = result.name;
if(listed.indexOf(name) === -1) {
players.push({
name: name,
scoreSum: 20
});
listed.push(name);
}
});
return players;
};
});
serverData在app中创建,如下所示:app.value('serverData', [...])
如果我在这样的模板中使用它:<li ng-repeat="player in playersData() | orderBy:'name'">{{player.name}}</li>
我收到错误:[$ rootScope:infdig] 我读了http://docs.angularjs.org/error/ $ rootScope:infdig,但我不明白,我的绑定错在哪里。有什么建议吗?
答案 0 :(得分:1)
您将收到此错误,因为您的playersData函数会更改您的模型。当摘要发生时,您的playesrData()
函数会运行,然后将值插入您的玩家对象...当角度看到模型已更改时,它会运行摘要。
当摘要运行时,playersData
将执行,模型将更改...当模型更改摘要运行时。当摘要运行时,playersData
将执行,模型将更改...当模型更改摘要运行时。当摘要运行时,playersData
将执行,模型将更改...当模型更改摘要运行时。
然后它放弃......
此外,看起来你的控制器正在返回你的playeresData函数本地的var ...这很奇怪,我不知道你在那里尝试做什么。 / p>
答案 1 :(得分:0)
也许您正在寻找类似this
的内容它是你问题的一个有效例子;)