如何将关键字(包含特殊字符)作为$ routeParam传递给AngularJS App?
$routeProvider.when('/search/:keyword', {templateUrl:'someURL', controller:SearchCtrl})
此关键字可以包含特殊字符。
因此,在重定向到此页面之前,我将encodeURIComponent设置为“keyword”。
当这个“关键字”有一些特殊字符,如“$,@,&,comma”等时,控制器正在执行两次。
EX: 如果关键字有'$'符号, 控制器
在克拉('^')符号的情况下不会发生这种情况。
我错过了某处或我的方法是不正确的。
答案 0 :(得分:4)
使用解决方法来处理这种情况:
utils.encodeUriQuery = function (val) {
return encodeURIComponent(val).
replace(/%40/gi, '@').
replace(/%3A/gi, ':').
replace(/%24/g, '$').
replace(/%2C/gi, ',').
replace(/%26/gi, '&').
replace(/%3D/gi, '=').
replace(/%2B/gi, '+');
}
在我将搜索关键字传递给网址
之前调用上述函数$window.location.href = "/#/search/" + utils.encodeUriQuery(searchKeyword);
注意:utils是一家工厂。