我正在尝试使用Angular编写我的第一个Web应用程序。
在正常模式下(关闭html5Mode),Angular强制地址的哈希部分看起来像“路径”(添加前导“ /”),并编码特殊字符-例如,它允许单个“?” 和“#”,并用%3F和%23替换其他字符。
有没有办法关闭此功能?我不想使用 $ locationProvider / $ routeProvider 功能- 我想自己解析哈希(在我的情况下,用户将在哈希中输入一些“自由文本”以在我的网站内搜索)。
我读到routeProvider无法配置为使用正则表达式…
如果打开了htmlMode,则不会强制地址的哈希部分看起来像路径(无前导“ /”),但仍会编码特殊字符。
我知道有些浏览器可能仍然会编码/转义特殊字符,但是如果用户设法在其地址栏中输入一些特殊字符,那么我就不想更改它。
谢谢
不确定这样做的副作用,但是可以完成工作。请注意,即使有意使用,也会从角度应用程序禁用所有位置操纵。
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; }]); }]);