Angularjs 是在第二个哈希 /#/# 之后的 Urlencoding 正斜杠,即使没有使用 routeprovider

Angularjs is Urlencoding forward slashes after second hash /#/# even though no routeprovider is used

我是 运行 angular 1.3.11 并且包括一个注入 url 用于深度链接的应用程序 /#/#/pagename/itemid

问题是,一旦位置改变,似乎 angular 覆盖了 url,url 编码斜线在第二个散列之后 /#/#%2Fpagename%2Fitemid

有没有办法配置 angular 不重写 url?我没有在这些特定页面的任何地方使用 angular routeprovider,所以我根本不明白为什么它需要触及 url。

深层链接 url 由底层应用程序提供,我无法控制。 angular 实现在我这边。我搜索了 angular 文档、google 和 Whosebug,但没有找到类似问题的解决方案。

当然我可以尝试 url 在将它发送回应用程序之前对其进行解码,但我更希望 angular 让我的 url:s 在我询问之前到.

Turn off URL manipulation in AngularJS 找到了答案。那里建议的相同解决方案对我有用:

angular.module('sample', [])
    .config( ['$provide', function ($provide){
        $provide.decorator('$browser', ['$delegate', function ($delegate) {
            $delegate.onUrlChange = function () {};
            $delegate.url = function () { return ""};
            return $delegate;
        }]);
    }]);