2016-12-29 62 views
0

我有幾個基本參數,經常出現在我的應用程序中。ui-router/ui-sref,繼承參數?

簡易網址爲例路由器定義:

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

我需要通過這樣的:ID參數在每個state.go()或UI-SREF?

例子:

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

我就會簡單得多,如果有複製名爲url參數,並指定一個特定的參數,如果我想更換它或省略它的方式。

例子:

ui-sref="account" 

而且當且僅當我想覆蓋它:

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

根據API繼承是默認的行爲: 「繼承布爾(默認爲true ),如果true將從當前url繼承url參數。「https://github.com/angular-ui/ui-router/wiki/Quick-Reference#stategoto--toparams--options

這applys到UI-SREF還根據: 「有是UI的SREF和$ state.go的功能沒有差異看到該文檔」 Difference between ui-sref and $state.go in AngularJS UI-Router

這似乎微不足道,或我誤解的東西:-( 我試圖玩弄嵌套的狀態,但在實際應用中還沒有嵌套狀態carasteristics

+1

我真的不明白這一點。你爲什麼想從1234賬戶轉到1234賬戶?帳戶和配置文件是兩個完全獨立的資源,不是嗎?如果它們是同一資源的兩個獨立部分,則最好使用像/ foos /:id/profile,/ foos /:id/account這樣的URL,然後您可以使用父項foo狀態,並使用兄弟路徑:^ .profile,^ .account。 –

+0

聽起來公平!我會試試看。 –

回答

2

我認爲你需要反轉您的網址的順序,將其更改爲這樣的事情:

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

它更有意義這樣反正,你不是找了一個設定的id,你與的:idid查找用戶/應用/網站/等的設置。您可以將父狀態user設爲abstract,並將其中一個子狀態設置爲導航至user/:id的默認狀態。這樣,id將被繼承,但您可以簡單地通過說ui-sref="^.account"(相對狀態轉換)來轉換。