javascript - Angular ui 路由器 : Can you change state without changing URL?

标签 javascript angularjs angular-ui angular-ui-router

ui-router多个嵌套 View 功能非常好 - 您可以轻松地从应用程序的一个状态跳到另一个.

有时您可能想更改 URL,但有时又不想。我觉得 state 的概念应该与 routing 分开/可选。

Here's a plunker that shows what I mean.这是 ui-router 文档中的一个 plunker 的分支,有 2 个小的变化如下所示:

.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。 plunker

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

最佳答案

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

如果您希望两个州具有相同的 URL,请创建一个 abstract parent state ,为它分配一个 URL,并使它的两个状态成为它的子级(任何一个都没有 URL)。

关于javascript - Angular ui 路由器 : Can you change state without changing URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22791071/

相关文章:

javascript - 我如何将其变成多场比赛?

javascript - sproutcore 属性(@each)未更新

javascript - Angular Material 的 md-warn 开关

angularjs - 如何让发起的Controller知道范围值已经改变

javascript - 更改 URL 时如何更新 AngularJS 指令?

angularjs-directive - Angular UI select2 指令 - 以编程方式更新模型而不反射(reflect)在小部件上

javascript - 如何解决 Angularjs TypeError : Cannot read property 'push' of undefined?

javascript - react 高阶组件 : making assumptions about wrapped components

javascript - 创建动态模板并绑定(bind)内容 Angular

javascript - 如何使用 javascript/ajax 拖放后更新数据库?