2016-05-05 3 views
0

ng-routeに1つの3値条件を追加したいとします。以下を見つけてください:ng-routeに3項演算子を追加する条件

しかし、私はURLに何かを入力すると、いつも「/ air」に行きます。

上記のコードに問題がありますか?

+0

なぜ '/ air'に'/air'をリダイレクトし、待って? "http:// localhost:9001 /#!/ flight"と入力すると、循環リダイレクトの問題 – Phil

答えて

0

問題は、式が1回だけ評価されることです。

それはたびに呼び出されるようredirectTo機能作る...

redirectTo: function(routeParams, currentPath) { 
    console.log('Otherwise rule matched for path', currentPath); 
    return /^\/(flight|air)\/?$/.test(currentPath) ? '/air' : '/hotel'; 
} 
+0

のように聞こえて、 '/ hotel'に行きます。 – anudeep

+0

デバッグを試してください(上の 'console.log()'コールを参照してください) – Phil

1

あなたの表現は、それが関係なく、常に$window.location.pathnameが何であるかの'/air/'に解決されるような方法で設定されています。

私はあなたがおそらく代わりにこれを行うために意図されたと思う:

$window.location.pathname === '/flight/' || $window.location.pathname === '/air/' ? '/air' : '/hotel' 
+0

これはおかげさまで動作します。どのように我々は、使用して、以下のコードのユニットテストを書くのですかジャスミン: 'そうでない場合は({redirectTo:機能(){ 場合(CONTEXTUAL_START_VIEW){ リターン($ window.location.href.indexOf( '/飛行/') |/$ window.location.href.indexOf( '/ air /'))> -1? '/ air': '/ hotel'; } else { return '/ hotel'; } }}} ; ' – anudeep