2016-07-20 1 views
0

Dans mon contrôleur je le code suivant:Cacher IonicLoading après pour le cycle

$scope.auth = function (s) { 

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

    if (s=0) { 
     console.log("Alert!") 
    } else { 

     for (i = 0; i < s; i++) { 
      Data.update("my params").then(function (result) { 
       console.log(result) 
      }, function (err) { 
       console.log(err); 
      }); 
     } 

    } 
} 

Data.update() est une requête http dans le fichier services.js.

Je voudrais afficher le chargement ionique jusqu'à la fin du cycle. Si je mets $ ionicLoading.hide() après le cycle rien ne se passe parce que le loader montre et se cache immédiatement.

Pouvez-vous m'aider?

Répondre

0

Utilisez $q.all pour tirer plusieurs promesses en même temps et faire quelque chose une fois tous sont résolus:

var promiseArray = []; 

for (i = 0; i < s; i++) { 
    promiseArray.push(Data 
    .update("my params") 
    .then(function (result) { 
     console.log(result) 
    }, function (err) { 
     console.log(err); 
    }); 
    }); 
} 

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

Vous pouvez masquer le chargement à la dernière itération de boucle

for (i = 0; i < s; i++) { 
     Data.update("my params").then(function (result) { 
      if(i==s){ 
       $ionicLoading.hide(); 
      } 
      console.log(result) 
     }, function (err) { 
      console.log(err); 
     }); 
    }