我们正在使用angularJS和angular ui-router,并希望更改地址栏中的URL,但保持视图/状态相同。
我尝试过使用历史记录状态,但是我遇到了冲突导致无限的$ digest循环。
我还尝试过sync()https://github.com/angular-ui/ui-router/wiki/Quick-Reference#urlroutersync中描述的方法 - 实际上是在preventDefault
上调用$locationChangeSuccess
。但是,这似乎不起作用 - 正如这个plunkr所证明的那样:http://plnkr.co/pLC2Ai
有谁知道这个问题的任何解决方案?
答案 0 :(得分:2)
当然,我的伴侣! :)
使用$stateChangeStart
,而不是$locationChangeSuccess
答案 1 :(得分:0)
您是否尝试过history.pushState方法?
在Mozilla的网站上说:“这会导致网址栏显示http://mozilla.org/bar.html,但不会导致浏览器加载bar.html甚至检查bar.html是否存在。”
history.pushState(stateObj, "page 2", "bar.html");
您可能需要注入$ locationProvider,然后设置$ locationProvider.html5Mode(true)。