2016-12-29 4 views
0

私は基本的であり、しばしば私のアプリケーションに存在するいくつかのパラメータを持っています。ui-router/ui-sref、継承されたパラメータ?

は、ルータの定義でURLのexempleを簡素化:すべてのstate.go()またはUI-SREFにidパラメータ:

url:'/settings/:id' 
url:'/profile/:id' 
url:'/account/:id' 

私はこれに合格する必要がありますか?

例:

ui-sref="settings({id:vm.id})" 
ui-sref="profile({id:vm.id})" 
ui-sref="account({id:vm.id})" 

という名前のURLパラメータをコピーして、私はそれを交換するか、またはそれを省略したい場合は、特定のパラメータを指定する方法があった場合、私ははるかに簡単になります。

例:

ui-sref="account" 

そして、もし、私はそれを上書きしたい場合にのみ:APIの継承による

ui-sref="account({id:vm.anotherId})" 

はデフォルトの動作です: 「ブール(デフォルト真を継承します)、trueの場合、現在のURLからURLパラメータを継承します。https://github.com/angular-ui/ui-router/wiki/Quick-Reference#stategoto--toparams--options

そして、これはに応じても、UI-SREFにapplys: "UI-SREFと$ state.goの間には機能的な違いはありませんドキュメントを参照してください" Difference between ui-sref and $state.go in AngularJS UI-Router

これは些細なようで、または私は何かを誤解しています:-( 入れ子になった状態で遊んでみましたが、実際のアプリケーションはネストされた状態の修復ではありません。

+1

私は実際にはポイントが表示されません。なぜあなたは1234のアカウントから1234のプロフィールに行きたいのですか?アカウントとプロファイルは完全に別々の2つのリソースです。同じリソースの2つの別々の部分である場合は、/ foos /:id/profile、/ foos /:id/accountなどのURLを使用すると、親foo状態を使用できるようになります。兄弟パス:^ .profile、^ .account。 –

+0

音がフェア!私はそれを試してみます。 –

答えて

2

私はあなたのURLの順序を逆にする必要があると思います。

url: user/:id/settings 
url: user/:id/profile 
url: user/:id/account 

これは、この方法は、とにかく、あなたが設定のidを見ていない、あなたが:ididをユーザー/アプリケーション/ Webサイトの/ etc の設定を探しているより多くの意味があります。親状態userabstractとし、子状態の1つをuser/:idにナビゲートするデフォルト状態にすることができます。そうすれば、IDは継承されますが、単にui-sref="^.account"(相対的な状態遷移)と言うことで簡単に遷移することができます。

関連する問題