使用离子中的promise处理对象数组

时间:2016-03-11 13:36:06

标签: ionic-framework

我有这样的对象数组: $scope.userList = [{"Name" : "Sumit", "Surname" : "Ranjan"}, {"Name" : "Claudio", "Surname" : "Gomes"}, {"Name" : "Sumit", "Mwanda" : "Mwanda"}];

我使用REST API在后端创建用户。我创建了一个服务因子来做到这一点。

我想逐个上传用户。我在启动进程之前使用$ ionicLoading显示加载图标,并且只有在处理完所有数组项后才想关闭它。

以下是我的代码:

//显示加载图标

var showLoading = function() {
$ionicLoading.show({
content: 'Loading',
animation: 'fade-in',
showBackdrop: true,
maxWidth: 200,
showDelay: 0
});
}

然后运行循环来处理每个项目

for(var i=0; i< Object.keys($scope.userList).length; i++){
var promise = CreateNewUser.create( {
$scope.userList[i];
}
}).$promise;
promise.then(function(_response) {
//to-do some local stuff here
})
}

我的问题是,加载图标会在不处理循环中的所有项目的情况下卸载。 如何关闭加载图标只有数组中的所有项目都已循环处理。

提前致谢。

祝你好运, 萨米特

1 个答案:

答案 0 :(得分:0)

控制器:

$scope.userList = [{"Name" : "Sumit", "Surname" : "Ranjan"}, {"Name" : "Claudio", "Surname" : "Gomes"}, {"Name" : "Sumit", "Mwanda" : "Mwanda"}];
$scope.showLoading = function() {
  $ionicLoading.show({
    content: 'Loading',
    animation: 'fade-in',
    showBackdrop: true,
    maxWidth: 200,
    showDelay: 0
  });
}

$scope.hide = function(){
  $ionicLoading.hide();
};
$scope.createNewUsers = function () {
 $scope.showLoading();
 var promiseArray = [];

 for(var i=0; i< Object.keys($scope.userList).length; i++){
   var aPromise = CreateNewUser.create( {
       $scope.userList[i];
   }
    promiseArray.push(aPromise);
 }

 $q.all(promiseArray).then(function(){
    $scope.hide();
 })
}

//call the method wherever you want..!
$scope.createNewUsers();

如果这不起作用..! 然后尝试将完整的$scope.userList传递给服务,并在CreateNewUser.create();

中进行相同的实施

同时检查$q

希望这是一个帮助..!