1

Angular 用のキャッチオール コントローラーがないことはわかっています。例えば:

 $routeProvider.otherwise({
 controller: 'CatchAllCtrl'
 });

ただし、 $routeProvider.otherwise がトリガーされた場合にコードを呼び出す方法はありますか?

4

3 に答える 3

2

「それ以外の」ロジックを実行できる catchcall ルートにリダイレクトしてから、アプリ内の実際のビューに手動でリダイレクトできます。

$routeProvider
  .when('/', {
    templateUrl: '/partials/index.html', 
    controller: 'homeController'
  })
  .when('/otherwise', {
    controller:  'otherwiseController'
  })
  .otherwise({redirectTo: '/otherwise' });

そうでなければコントローラに $location を注入$location.path("/")して、行きたい場所にリダイレクトするように設定できます。

/otherwise ルートの templateUrl を指定する必要があるかもしれません (わかりません)。

于 2013-10-21T22:31:51.887 に答える
1

ルートの変更をリッスンし、コールバックで必要なアクションを実行できます。

  $rootScope.$on('$routeChangeSuccess', function() {
    var path = $location.path();
     // this shoudl fire for all routes
  }):
于 2013-10-21T22:27:04.017 に答える