2013-03-16 11 views
19

Muszę ustawić kolejkę wszystkich żądań jednocześnie, nie czekając na odpowiedź z poprzedniego żądania w angularjs.
Mam funkcję ładowania, która pokazuje ładowanie div za każdym razem zmienić trasę URL, ale nie jest w porządku, aby dokonać arrray kolejki w tej funkcji.

Czy ktoś może mi powiedzieć, która funkcja jest wywoływana w trasach angularjs za każdym razem, gdy zmieniam trasę adresu URL?
Oto kod trasy:Która funkcja jest wywoływana za każdym razem, gdy URL zmienia się w AngularJS?

angular.module('myApp', ['myApp.directives', 'myApp.services', 'myApp.filters']).config(
    function($routeProvider, $locationProvider, $httpProvider) { 
     $locationProvider.html5Mode(false); 
     $locationProvider.hashPrefix('!'); 

     $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; 

     var loading = function (data, headersGetter) { 
      $('loadingDiv').show(); 
      return data; 
     }; 
     $httpProvider.defaults.transformRequest.push(loading); 

     $routeProvider. 
     when('/', { 
      templateUrl: 'elements/home/home.html', 
      controller: homeCtrl 
     }); 
    }); 

Odpowiedz

22

Można użyć coś takiego:

.run(function($rootScope, $location) { 
    $rootScope.$watch(function() { 
     return $location.path(); 
    }, 
    function(a){ 
     console.log('url has changed: ' + a); 
     // show loading div, etc... 
    }); 
}); 
+0

ale $ zakres nie jest zdefiniowana w trasach. – Amb

+0

masz rację, edytowałem odpowiedź, zamiast $ rootScope, w funkcji inicjalizacji Module.run() – gargc

+1

Dzięki .. działa, ale teraz chcę, aby lista wszystkich oczekujących żądań na trasach lub w kontrolerze była gdziekolwiek .. Masz jakiś pomysł ? – Amb

23

$route usługa ma szereg zdarzeń można monitorować za pomocą $.on w kontrolerze:

$rootScope.$on("$routeChangeStart", function(args){}) 

$rootScope.$on("$routeChangeSuccess".... 

$rootScope.$on("$routeChangeError".... 

Zobacz dokument $route

Możesz ustawić ng-show na swoim elemencie, zamiast używać jQuery i ustawić zmienną na true w połączeniu zwrotnym $routeChangeStart i false w rozmowie telefonicznej $routeChangeSuccess.

Dobrym demo dla tych zdarzeń: https://github.com/johnlindquist/angular-resolve

Powiązane problemy