[英]Angular ui-router: Can you change state without changing URL?
ui-router
的多個嵌套視圖功能非常好 - 您可以輕松地從應用程序的一個狀態跳轉到另一個狀態 。
有時您可能想要更改URL,但有時不想。 我覺得狀態的概念應該與路由分開/可選。
這是一個顯示我的意思的plunker。 這是ui-router
文檔中的一個掠奪者的分支,下面有兩個小的更改:
.state('route1', {
url: "/route", // <---- URL IS SHARED WITH ROUTE2
views: {
"viewA": {
template: "route1.viewA"
},
"viewB": {
template: "route1.viewB"
}
}
})
.state('route2', {
url: "/route", // <---- URL IS SHARED WITH ROUTE1
views: {
"viewA": {
template: "route2.viewA"
},
"viewB": {
template: "route2.viewB"
}
}
})
這似乎有效 - URL保持不變。 再次,這里做了多少冗余工作? 這是經過批准/測試的用法嗎?
如果您可以省略州的url
,那將是很好的..
更新問題:這是經過批准/測試的用法嗎?
你絕對可以擁有一個沒有URL的州。 事實上,您的州都不需要網址。 這是設計的核心部分。 話雖如此,我不會做你上面做的。
如果您希望兩個狀態具有相同的URL,請創建一個抽象父狀態 ,為其分配URL,並使兩個狀態成為子狀態(任何一個都沒有URL)。
要添加到其他答案,多個命名視圖不使用URL。
來自文檔:
如果定義視圖對象,則將忽略狀態的templateUrl,template和templateProvider。 因此,如果您需要這些視圖的父布局,則可以定義包含模板的抽象狀態,以及包含“視圖”對象的布局狀態下的子狀態。
使用命名視圖的原因是,每個模板可以有多個ui-view,換句話說,在單個狀態中可以有多個視圖。 這樣,即使URL沒有更改,您也可以使用路由更改站點的各個部分,並且您也可以在不同模板中重用數據,因為它是具有自己的控制器和視圖的組件。
請參閱使用ui-router進行角度路由 ,以獲得有關示例的深入解釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.