我正在尝试使用 Angular 编写我的第一个网络应用程序。
在正常模式下(html5Mode 关闭),Angular 强制地址的散列部分看起来像“路径”(添加前导“/”),并对特殊字符进行编码——例如,它允许单个“?”和哈希中的“#”,并将其他替换为 %3F 和 %23。
有没有办法关闭这个功能?我不想使用 $locationProvider/$routeProvider 功能 - 我想自己解析哈希(在我的例子中,用户将输入一些“自由文本”在哈希中搜索我的网站)。
我读到不能将 routeProvider 配置为使用正则表达式...
如果打开 htmlMode,则地址的散列部分不会强制看起来像路径(没有前导“/”),但它仍然对特殊字符进行编码。
我知道某些浏览器可能会对特殊字符进行编码/转义,但如果用户设法在其地址栏中输入一些特殊字符,那么我不想更改它。
谢谢
最佳答案
不确定这样做的副作用,但它完成了工作。请注意,即使有意,它也会禁用 Angular 应用程序的所有位置操作。
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
关于javascript - 在 AngularJS 中关闭 URL 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18611214/