【发布时间】:2016-12-13 19:39:24
【问题描述】:
我正在努力为每场比赛争取所有球场:
HTML 如下所示:
<div ng-repeat = "g in games">
{{g.gameName}}
<ul>
<li ng-repeat = "c in getCourts(g.id)" ng-bind = "c.courtName"></li>
</ul>
</div>
控制器是:
$scope.games = {};
$scope.courts = {};
//$scope.slots = {};
$http.get(URI+"booking/allGames").then(function success(res){
$scope.games = res.data;
//console.log($scope.games);
},
function error(res){
console.log(res.data.message);
});
$scope.getCourts = function(gameId){
//courts = {};
$http.get(URI+"booking/courts/"+gameId).then(function success(res){
//console.log(gameId);
console.log(res.data);
return res.data;
//return courts;
},
function error(res){
console.log(res.data.message);
});;
}
当我执行这个时,我得到这个错误:
angular.min.js:6 Uncaught Error: [$rootScope:infdig]
angularJS 文档说,
当应用程序的模型变得不稳定并且 每个 $digest 循环都会触发状态更改和后续的 $digest 循环。
一个常见的错误是绑定到一个生成新的函数 每次调用数组。
我看到了这个答案:AngularJS use a function in a controller to return data from a service to be used in ng-repeat
但我不知道如何解决这个问题。
【问题讨论】:
-
我看到上面的链接中已经告诉了你问题的原因和答案
-
@GopinathShiva 原因我得到了,但我仍然无法修复它。
-
1) 您的
getCourts()方法没有返回任何内容,并且 2) 我认为ng-repeat无法兑现承诺 -
getCourts 返回 res.data @Phil
-
不,它没有。您的
$http承诺会以res.data解析,但调用函数getCourts()不会返回任何内容。你需要return $http.get(...,但是你遇到了我上面的第 2 点
标签: javascript angularjs