我是AngularJS的新手,这是我的尝试:
$scope.comparisonlist.forEach(function (script) {
$http.get('/info/' + script.id)
.success(function (data) {
$scope.comparisonResultList.push(data)
})
.error(function (data, status) {
console.error('Repos error', status, data);
})
});
$location.path('/comparison');
我试图改变http请求之后的路径(在请求循环之后),但是她发生的事情是它在http请求完成之前改变了路径。我不知道如何解决这个问题。我尝试使用诺言,但它完全不起作用
<div ng-repeat="result in comparisonResultList">
承诺,当我这样做^^在顶部我什么都没得到,我假设它检测compareResultList是空的莫名其妙
答案 0 :(得分:0)
当前的promise实现应该有效,在forEach循环中的每个异步操作完成后调用路径更改。
var promises = [];
$scope.comparisonlist.forEach(function (script) {
promises.push($http.get('/info/' + script.id)
.success(function (data) {
$scope.comparisonResultList.push(data)
})
.error(function (data, status) {
console.error('Repos error', status, data);
})
)
});
$q.all(prom).then(function () {
$location.path('/comparison');
});