angular使用LocationHashbangUrl解析URL,但设置了$ locationProvider.html5Mode(true)

时间:2016-03-16 10:24:16

标签: javascript angularjs requirejs

我遇到了与angular和html5Mode的奇怪行为:
当我输入SPA的URL时,我可以在调试器中看到,即使设置了$locationProvider.html5Mode(true),LocationMode也是 LocationHashbangUrl 。 因此,Url首先由 LocationHashbangUrl 解析 然后在angular执行$locationProvider.html5Mode(true)后,url会再次被解析。

我将此与此http://plnkr.co/edit/DA3Oq6?p=info的一个相当简单的示例实现进行了比较,但并非如此,并且立即从LocationHtml5Url开始。

我怀疑这会导致浏览器后退按钮出现问题 当我使用浏览器的后退按钮时,我可以在调试器中看到,首先通过 LocationHashbangUrl 而不是 LocationHtml5Url 再次解析url,这会导致Url更改为空路径

我在requirejs上下文中使用了角度1.2.28和角度路径1.2.28。

顺便说一下,这是angular routes are in history but browser back jumps to first entered url

的后续行动

1 个答案:

答案 0 :(得分:0)

我找到了原因:
在实际主应用程序之前有一个模块被引导,这就是初始 LocationHashbangUrl 对象的原因。

在此模块中设置$locationProvider.html5Mode(true);并解决它。