小编典典

在AngularJS中关闭URL操作

angularjs

我正在尝试使用Angular编写我的第一个Web应用程序。

在正常模式下(关闭html5Mode),Angular强制地址的哈希部分看起来像“路径”(添加前导“ /”),并编码特殊字符-例如,它允许单个“?”
和“#”,并用%3F和%23替换其他字符。

有没有办法关闭此功能?我不想使用 $ locationProvider / $ routeProvider 功能-
我想自己解析哈希(在我的情况下,用户将在哈希中输入一些“自由文本”以在我的网站内搜索)。

我读到routeProvider无法配置为使用正则表达式…

如果打开了htmlMode,则不会强制地址的哈希部分看起来像路径(无前导“ /”),但仍会编码特殊字符。

我知道有些浏览器可能仍然会编码/转义特殊字符,但是如果用户设法在其地址栏中输入一些特殊字符,那么我就不想更改它。

谢谢


阅读 344

收藏
2020-07-04

共1个答案

小编典典

不确定这样做的副作用,但是可以完成工作。请注意,即使有意使用,也会从角度应用程序禁用所有位置操纵。

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

ES6变体:

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

            return $delegate;
        }]);
    }]);
2020-07-04