我看到了其他有关此事的问题,但对我没有帮助。
我在angularjs控制器中有功能:
$scope.getUser = function(id){
ret = null;
$http.get('services/rest/users/' + id).then(
function(response){
ret = response.data.name;
},
function(response){
}
)
return ret;
}
我在html中调用该函数:
<div ng-repeat = "move in moves">Player:<span> {{getUser(move.player_id)}} </span> - {{move.guess}} - {{move.answer}}</div>
这会创建'services/rest/users/' + id
个请求的无限循环。当看到范围内的某个物体总是在变化时,我看到棱角可以做到这一点,但我在这里看不到这一点。
答案 0 :(得分:4)
方法完全错了。
$http
是异步的,ret
从getUser()
永远不要在视图中使用直接发出异步请求的函数。
相反,在控制器中(或更好地在服务中)迭代所有moves
,请求玩家数据,并将其添加为每个move
的属性
function getUser(id) {
return $http.get('services/rest/users/' + id).then(function(response) {
return response.data.name;
}).catch(function() {
return 'Unknown Player';
})
}
angular.forEach($scope.moves, function(move){
getUser(move.player_id).then(function(player){
move.player = player;
});
});
查看:
<div ng-repeat = "move in moves">Player:<span> {{move.player)}} </span>...</div>