Javascript 对于使用角度服务的循环,请等到完成后再转到下一页
我正在使用“for”循环调用一个服务,并希望等到完成后再转到下一页(路由),因此数据在加载之前就已经存在,我不确定如何执行 以下是我的服务:Javascript 对于使用角度服务的循环,请等到完成后再转到下一页,javascript,angularjs,for-loop,Javascript,Angularjs,For Loop,我正在使用“for”循环调用一个服务,并希望等到完成后再转到下一页(路由),因此数据在加载之前就已经存在,我不确定如何执行 以下是我的服务: .service("OrdersService", function($http, $rootScope, $location) { var getData = {}; getData.eachOrder = function(id){ var url = '/service/rest/orders'; r
.service("OrdersService", function($http, $rootScope, $location) {
var getData = {};
getData.eachOrder = function(id){
var url = '/service/rest/orders';
return $http.get(url+'/'+id)
.success(function(data) {
getData.allOrders(data);
}).
error(function (data, status, headers, config) {
console.error('Error fetching feed:', status, headers, config);
});
};
getData.allOrders = function(data){
$rootScope.ordersTotal = $rootScope.ordersTotal || [];
$rootScope.ordersTotal.push(data);
};
});
这是我的for循环
$scope.viewDetails = function(data){
for(var i = 0; i < $scope.checkedIds.length; i++){
if($scope.checkedIds[i]){
OrdersService.eachOrder(i);
}
}
// here's where I'd like to wait until loop finished before changing location
$location.path('/details');
};
$scope.viewDetails=函数(数据){
对于(变量i=0;i<$scope.checkedds.length;i++){
如果($scope.checkedds[i]){
OrdersService.eachOrder(i);
}
}
//在这里,我想等到循环完成后再更改位置
$location.path('/details');
};
(checkedds包含和数组或数字。)
谢谢你的帮助。我是Angular的新手,所以我很乐意为您提供有关如何更好地执行此代码的任何提示。
OrderService。每个horder
返回一个,因此您可以等待他们全部使用完$q.all
:
var promises = [];
for(var i = 0; i < $scope.checkedIds.length; i++){
if($scope.checkedIds[i]){
promises.push(OrdersService.eachOrder(i));
}
}
$q.all(promises).then(function() {
$location.path('/details');
});
var承诺=[];
对于(变量i=0;i<$scope.checkedds.length;i++){
如果($scope.checkedds[i]){
promises.push(OrdersService.eachOrder(i));
}
}
$q.all(承诺)。然后(函数(){
$location.path('/details');
});
效果非常好,非常感谢您的帮助。