Angularjs Ui路由器切换回主状态(url:)不会更改url

Angularjs Ui路由器切换回主状态(url:)不会更改url,angularjs,angular-ui-router,Angularjs,Angular Ui Router,问题是,如果我从任何其他状态更改回带有url:的索引视图,页面内容会更改,但url不会更改 $stateProvider .state('index', { url: "", views: { ... } }) .state('route1', { url: "/route1", views: { ... } }) 因此

问题是,如果我从任何其他状态更改回带有url:的索引视图,页面内容会更改,但url不会更改

$stateProvider
    .state('index', {
        url: "",
        views: {
            ...
        }
    })
    .state('route1', {
        url: "/route1",
        views: {
            ...
        }
    })
因此,想象一下在*.com/route1上,点击导航栏徽标返回索引。url仍然显示为.com/route1,尽管我希望url为.com

我想创建一个plunker,但没有必要,因为其中一个最流行的模板已经存在相同的问题:

要查看问题,必须从右上角的蓝色按钮进入预览模式。然后去一号公路回家。看看网址

$stateProvider
    .state('index', {
        url: "",
        views: {
            ...
        }
    })
    .state('route1', {
        url: "/route1",
        views: {
            ...
        }
    })
我很肯定有人问过这个问题,但不幸的是,我无法找到正确的搜索词来找到答案


这是ui路由器的问题吗?此问题是否有已知的修复方法?

您必须将url定义为/而不是。更新的plunker


我想我将通过使一些根状态URL成为绝对URL来解决这个问题,如回答中所述:


Ui路由器绝对状态:

您知道吗//会附加在域的末尾以显示其SPA。您可以使用.state'index'、{url:/,///add/hereviews:{…}轻松实现这一点虽然我不确定你想告诉我什么,但我已经将HTML5Mode设置为true。因此//不适用于我的情况。正如我在下面评论的那样:但有时对于像索引这样的状态,我必须将url定义为某物,而对于简单的情况,大多数时候是将url定义为/某物。如果我在url中使用了错误的语法,我会获取双斜杠://something/something或中间缺少的斜杠:/something something。但在定义新状态时,这已经是不一致的,我希望避免。但有时对于像索引这样的状态,我必须将URL定义为something,对于简单的情况,定义为/something在url中,我会得到双斜杠//某物/某物或不带斜杠/某物/某物。但在定义新状态时,这已经是不一致的。您知道在保持索引url不变的情况下解决问题的其他方法吗?对不起,但我不确定您的意思。您能证明您的担忧吗在plunker中?我试图提出一个,虽然很难同时保持简单。但这可能会显示出我所说的不一致。我尝试添加一些注释,这可能有助于理解问题。啊…现在我知道你的意思了。问题的出现只是因为你有/作为家长vie的url如果url是home或其他什么的,它会工作得很好,如这里所示-。抱歉,但我不知道如何在不引入上述不一致性的情况下解决这个问题。