我们使用angular 1.5,并拥有自己的路由机制(通过监听$locationChangeSuccess
事件)。
它工作正常,但是当我编辑网址的哈希部分并将其设置为#a/b
时,会立即将其替换为#a%2fb
(尽管$locaction.hash()
会返回'\ b} “)。
知道为什么会发生这种情况,更重要的是,如何防止这种情况发生?
起初我认为它是浏览器完成的,但是当我在浏览器中将#a/b
添加到简单html文件的URL时,/
仍然存在,所以我假设这里涉及角度
在我的app.ts
中,$locationProvider
配置如下:
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
答案 0 :(得分:1)
在您的链接中添加感叹号'!' 也应该可以胜任,因为您的情况应该是这样的:
<a href="#!a/b"
答案 1 :(得分:0)
我查看了角度源并意识到这可能无法在启用html时完成 - 哈希部分将始终被编码。但我确实发现$ location服务中使用的编码是自定义编码,&#39;:&#39;没有编码,所以我改用了使用&#39; /&#39;作为散列部分中的分隔符,使用&#39;:&#39;。