我正在尝试使用 Angular 编写我的第一个网络应用程序。
在正常模式下(html5模式关闭),Angular 强制地址的哈希部分看起来像“路径”(添加前导“/”),并对特殊字符进行编码 - 例如,它允许单个“?”和“#”在哈希中,并用 %3F 和 %23 替换其他。
有没有办法关闭这个功能?我不想使用$locationProvider / $routeProvider功能 - 我想自己解析哈希(在我的情况下,用户将在哈希中输入一些“自由文本”以在我的网站内搜索)。
我读到,routeProvider 无法配置为使用正则表达式...
如果打开 htmlMode,则地址的哈希部分不会被迫看起来像路径(没有前导“/”),但它仍然对特殊字符进行编码。
我知道某些浏览器可能会编码/转义特殊字符,但是如果用户设法在其地址栏中输入一些特殊字符,那么我不想更改它。
Thanks
不确定这样做的副作用,但它可以完成工作。请注意,即使有意这样做,它也会禁用角度应用程序的所有位置操作。
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;
}]);
}]);
在 Chrome 30、IE9、IE10 中测试。
灵感来自https://stackoverflow.com/a/16678065/369724
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)