ui-router的多个嵌套视图功能非常好--您可以轻松地从应用程序的一种状态跳转到另一种状态。
有时您可能希望更改URL,但有时不希望更改URL。我觉得状态的概念应该与路由是分开的/可选的。
这是一个显示我的意思的柱塞。 --这是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。柱塞
更新问题:这是批准/测试的使用吗?
发布于 2014-04-01 16:42:46
您绝对可以拥有一个没有URL的状态。事实上,你们的州都不需要URL。这是设计的核心部分。话虽如此,我还是不会做你上面所做的事。
如果您希望两个状态具有相同的URL,那么创建一个抽象父状态,为它分配一个URL,并使它的两个状态子(其中一个没有URL )。
发布于 2016-08-10 20:49:12
若要添加到另一个答案,多个命名视图不使用URL。
从医生那里:
如果定义了视图对象,则会忽略状态的templateUrl、模板和templateProvider。因此,在需要这些视图的父布局的情况下,可以定义包含模板的抽象状态,以及包含“视图”对象的布局状态下的子状态。
使用命名视图的原因是,每个模板可以有多个ui视图,或者换句话说,在单个状态中有多个视图。这样,您可以使用您的路由更改站点的各个部分,即使URL没有改变,您也可以在不同的模板中重用数据,因为它是一个具有自己的控制器和视图的组件。
有关示例的深入说明,请参见使用用户界面路由器的角度路由。
https://stackoverflow.com/questions/22791071
复制相似问题