如何防止AngularJS 1.5转义我的URL哈希并用'%2F'替换'/'?

时间:2016-10-13 19:42:12

标签: angularjs url escaping

我们使用angular 1.5,并拥有自己的路由机制(通过监听$locationChangeSuccess事件)。

它工作正常,但是当我编辑网址的哈希部分并将其设置为#a/b时,会立即将其替换为#a%2fb(尽管$locaction.hash()会返回'\ b} “)。

知道为什么会发生这种情况,更重要的是,如何防止这种情况发生?

起初我认为它是浏览器完成的,但是当我在浏览器中将#a/b添加到简单html文件的URL时,/仍然存在,所以我假设这里涉及角度

在我的app.ts中,$locationProvider配置如下:

    $locationProvider.html5Mode({
        enabled: true,
        requireBase: false
    });

2 个答案:

答案 0 :(得分:1)

在您的链接中添加感叹号'!' 也应该可以胜任,因为您的情况应该是这样的:

<a href="#!a/b"

答案 1 :(得分:0)

我查看了角度源并意识到这可能无法在启用html时完成 - 哈希部分将始终被编码。但我确实发现$ location服务中使用的编码是自定义编码,&#39;:&#39;没有编码,所以我改用了使用&#39; /&#39;作为散列部分中的分隔符,使用&#39;:&#39;。