簡體   English   中英

Angular ui-router:你可以在不改變URL的情況下改變狀態嗎?

[英]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 ,那將是很好的..

更新:您可以省略州的網址。 plunker

更新問題:這是經過批准/測試的用法嗎?

你絕對可以擁有一個沒有URL的州。 事實上,您的州都不需要網址。 這是設計的核心部分。 話雖如此,我不會做你上面做的。

如果您希望兩個狀態具有相同的URL,請創建一個抽象父狀態 ,為其分配URL,並使兩個狀態成為子狀態(任何一個都沒有URL)。

要添加到其他答案,多個命名視圖不使用URL。

來自文檔:

如果定義視圖對象,則將忽略狀態的templateUrl,template和templateProvider。 因此,如果您需要這些視圖的父布局,則可以定義包含模板的抽象狀態,以及包含“視圖”對象的布局狀態下的子狀態。

使用命名視圖的原因是,每個模板可以有多個ui-view,換句話說,在單個狀態中可以有多個視圖。 這樣,即使URL沒有更改,您也可以使用路由更改站點的各個部分,並且您也可以在不同模板中重用數據,因為它是具有自己的控制器和視圖的組件。

請參閱使用ui-router進行角度路由 ,以獲得有關示例的深入解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM