2016-07-05 3 views
0

J'ai ajouté le angular-block-ui module à mon projet Angular mais il ne bloquait pas automatiquement l'interface utilisateur lors de mes requêtes ajax. Donc, j'ai essayé de l'utiliser manuellement et il montre l'écran de bloc mais il ne le rejette pas. Donc, j'ai fait un test plus simple, montrant simplement le bloc et essayant de l'arrêter après 2 secondes, et le même problème. Les écrans sont bloqués mais ça ne disparaît pas.blockUI ne s'arrête pas

Voici mon code:

'use strict'; 

myApp.controller('LoginModalCtrl', function ($scope, blockUI) { 

    $scope.login = function() { 
     console.log("on submit"); 

     blockUI.start(); 

     setTimeout(function(){ 
      //do what you need here 
      blockUI.stop(); 
      console.log("finished") 
     }, 2000); 
    } 

}) 

;

Une idée de ce que je fais mal?

Répondre

0

Tout ce "blocage" consiste à placer div sur le dessus de votre page. C'est tout.

il fonctionne: http://plnkr.co/edit/HjXcgQD7JghFjtsOAEo0?p=preview

Vous devez utiliser $timeout, non setTimeout.

ne veux pas entrer dans les détails, mais il ne semble pas être que Thow smart bibliothèque ...

+0

Merci pour leur réponse Petr. J'utilise angular-block-ui qui, oui, est similaire au jquery, mais il était censé être entièrement automatique, donc je n'aurais pas à m'inquiéter d'afficher/masquer modal à chaque requête. – rsc

0

Vous devez utiliser $timeout, pas setTimeout.

'use strict'; 
myApp.controller('LoginModalCtrl', function ($scope, blockUI, $timeout) { 

    $scope.login = function() { 
     console.log("on submit"); 

     blockUI.start(); 

     $timeout(function(){ 
      //do what you need here 
      blockUI.stop(); 
      console.log("finished") 
     }, 2000); 
    } 

})