2016-09-07 5 views
2

angleのui-routerを使用すると、リダイレクトを書き込む方法があります。これにより、クエリパラメータがターゲット状態に移入されます。たとえば、ここに私の状態があります:リダイレクトのUIルータとクエリパラメータ

.state('me.profile', { 
    url: '/profile?action', 
    templateUrl: '/app/components/account/profile/profile.html', 
    controller: 'profileCtrl', 
    authenticate: true 
}) 

特定のアクションは、クエリパラメータで渡すことができます。たとえば、

examplesite.com/profile?action=editProfile 

ただし、私はかなりのURLをユーザーに提供したいと考えています。例:

examplesite.com/profile/edit 

リダイレクトステートメントを記述すると、そのルートに目的のクエリパラメータが設定されます。次のコードはで、現在作業していないです。クエリのパラメータ?action=editPaymentは、ユーザーがターゲット状態にリダイレクトされると失われます。

$urlRouterProvider.when('/profile/edit', '/profile?action=editProfile'); 
+1

でアクションを読んでは、異なるパラメータで同じURLに行きたいですか?どのように行動を決めるのですか? $ urlRouterProvider.when( '/ profile/payment'、 '/ profile?action = createPayment')のようなものがありますか? –

+0

@PoyrazYilmazアクションは元のURLで渡されます。したがって、/ profile/editは/ profile?action = editに自動的に解決されます。残念ながら、あなたが書いた例では、クエリのパラメータは最終状態にはなりません。 –

答えて

1

から?action変更してのインプレース:

url: '/profile/:action', 

を注入$stateParamsとあなたのコントローラ

var action = $stateParams.action; 
+0

地面から設計する場合、これが適切な解決策になります。しかし、この新しいルートはすべての既存のURLを ''/profile''に分割します。 ''/profile'' - > ''/profile/''(末尾のスラッシュ)にリダイレクトを追加する必要があります。別の方法が見つからない場合、これは私の最終的な解決策になります。 –

関連する問題