Angular ui-router:你可以在不改变URL的情况下改变状态吗?

Mic*_*wis 29 javascript angularjs angular-ui angular-ui-router

多重嵌套视图的功能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"
            }
        }
    })
Run Code Online (Sandbox Code Playgroud)

这似乎有效 - URL保持不变.再次,这里做了多少冗余工作?这是经过批准/测试的用法吗?

如果你可以省略url一个州,那将是很好的..

更新:您可以省略州的网址.plunker

更新问题:这是经过批准/测试的用法吗?

Nat*_*ele 41

你绝对可以拥有一个没有URL的州.事实上,您的州都不需要网址.这是设计的核心部分.话虽如此,我不会做你上面做的.

如果您希望两个状态具有相同的URL,请创建一个抽象父状态,为其分配URL,并使两个状态成为子状态(任何一个都没有URL).

  • [抽象状态的文档](https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views#abstract-states) (7认同)