212

ルート変更でイベントを監視/トリガーするにはどうすればよいですか?

4

6 に答える 6

333

: これは、AngularJS のレガシー バージョンに対する適切な回答です。更新されたバージョンについては、この質問を参照してください。

$scope.$on('$routeChangeStart', function($event, next, current) { 
   // ... you could trigger something here ...
 });

次のイベントも利用できます (それらのコールバック関数は異なる引数を取ります):

  • $routeChangeSuccess
  • $routeChangeError
  • $routeUpdate - reloadOnSearchプロパティが false に設定されている場合

$routeドキュメントを参照してください。

他に 2 つの文書化されていないイベントがあります。

  • $locationChangeStart
  • $locationChangeSuccess

$locationChangeSuccess と $locationChangeStart の違いは何ですか?を参照してください。

于 2013-02-08T04:57:50.703 に答える
30

ウォッチを特定のコントローラー内に配置したくない場合は、Angular アプリでアプリケーション全体のウォッチを追加できます。run()

var myApp = angular.module('myApp', []);

myApp.run(function($rootScope) {
    $rootScope.$on("$locationChangeStart", function(event, next, current) { 
        // handle route changes     
    });
});
于 2016-05-08T13:59:34.780 に答える
11
$rootScope.$on( "$routeChangeStart", function(event, next, current) {
  //..do something
  //event.stopPropagation();  //if you don't want event to bubble up 
});
于 2015-09-29T12:55:17.550 に答える