2013-11-15 208 views
1

我有一個URL參數,我想在所有狀態中存在。該參數是'asUser',它允許管理員以另一個用戶的身份查看應用程序。我想:如何在角度ui路由器中使用繼承參數?

$stateProvider 
    .state("root", { 
    params: ['asUser'] 
    }) 
    .state("root.login", { 
    url: "/login", 
    templateUrl: "/static/partials/login.html",   
    controller: 'LoginCtrl' 
    }) 
    ... 

但是,當我去到一個URL /login?asUser=123,我在控制檯收到此錯誤:

Failed to instantiate module myApp due to: 
Missing required parameter 'asUser' in state 'root.login' 

反正有這樣與ui.router全局參數,而不不得不在每個州都提及它,並將它傳遍各處?

+0

您使用的是什麼版本的ui路由器?我從來沒有見過這樣的狀態參數,他們不這樣做,在文檔 – NicolasMoise

+1

哦,好吧,我得到你想要做的。這只是一個猜測,但我嘗試將參數添加到「root.login」的URL中,例如/ login /:asUser – NicolasMoise

+0

謝謝,這使我走上了正確的軌道。 –

回答

2

我會做:

.state("root", { 
    url: '/?asUser' 
}) 

你仍然必須處理你自己的參數繼承,但至少應該讓該參數在所有有效的狀態。

+0

謝謝,這似乎工作。我不確定爲什麼它的行爲與'params:''asUser'不同'但是你的示例允許我不在所有子狀態URL中重複參數。另外,我向這個根狀態添加了'abstract:true'。 –

+0

「我不確定爲什麼它的行爲與'params:['asUser']''有所不同 - 因爲你沒有閱讀文檔:https://github.com/angular-ui/ui-router/維基/快速參考#params –

+2

是的,我做到了。 :)在那個關於'params'的說法中,它是否表示行爲與'url'中指定的參數不同?它只是說,你可以使用它作爲替代,當不指定'url'時。 –