2017-07-11 3 views
0

私の問題は、最初のパス引数が有効な「ソート」値である場合にロードするコントローラがあることです。

/date 
/name 

それ以外の場合は、エラーページが読み込まれます。

マイrouteProviderエントリ次のようになります。

$routeProvider. 
     when('/:sort', { 
      controller: 'myCtrl' 
     }) 
     .otherwise({ 
      templateUrl: 'error.html' 
     }); 

私の問題は、エラー・ページをロードする必要がありますコントローラは関係なく/空自

'/name' loads the controller so does '/asdf' 

を与えているもの値ロードされませんです。

私の質問名前付きグループに有効な値(regexかもしれない)を指定する方法はありますか、複数のrouteProviderエントリを指定する必要があります。

$routeProvider. 
     when('/date', { 
      controller: 'myCtrl' 
     }) 
     when('/name', { 
      controller: 'myCtrl' 
     }) 
     .otherwise({ 
      templateUrl: 'error.html' 
     }); 

これが唯一の解決策である場合、質問をフォローアップ:私のコントローラで

私はの値取得:ソート使っrouteParamsを、そして、それは非常に便利です。

名前付きグループを使用せず、すべての有効なソート値に対して$ routeProviderエントリがある場合、sortの値は$ routeParamsに含まれません。

正しいソート値を取得するためにパスを解析する必要がありますか、それともより簡単な方法ですか?

ありがとうございます。

答えて

0

$ routeChangeStartはあなたが探しているものです!

$routeのドキュメントをご覧ください。ルートが変更されると、このイベントが発生します。 regex.dontMatchがあなたの正規表現機能

ある

$rootScope.$on("$routeChangeStart", function (event, next, current) { 
    //next is the next route information and current the current route. 

// if regex.dontMatch(next) then redirect else don't do anything 
}); 

関連する問題