2013-03-16 18 views
19

私はすべてのリクエストのキューを、anglejsの前回のリクエストからの応答を待たずに同時に行う必要があります。
私はURLのルートを変更するたびにロードdivを表示するローディング機能を持っていますが、その機能ではキューのarrrayを作るのはOKではありません。

urlルートを変更するたびにangularjsルートで呼び出される関数は誰にでも分かりますか?ここ
は、ルートコードです:AngularJSでurlが変更されるたびに呼び出される関数はどれですか?

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 
     }); 
    }); 

答えて

22

あなたが何かのように使用することができます

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

が、$範囲はルートで定義されていません。 – Amb

+0

あなたは正しいですが、代わりに、$ rootScopeをModule.run()初期化関数で編集しました – gargc

+1

ありがとうございます。それは動作しますが、現在はルート上またはコントローラ内のすべての保留中のリクエストのリストが必要になります。あなたは何か考えていますか? – Amb

23

$routeサービスを使用すると、コントローラで$.onを使用して監視することができ、一連のイベントがあります。

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

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

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

doc $route

jQueryを使用せずに要素にng-showを設定し、$routeChangeStartコールバックで変数をtrueに設定し、$routeChangeSuccessコールバックでfalseに設定できます。

これらのイベントのために良いデモ:https://github.com/johnlindquist/angular-resolve

関連する問題