我正在尝试使用调用 encodeURIComponent 的过滤器对 URL 中传递的值进行编码。
我原来的过滤器
angular.
module('machineorderDetail').
filter('encodeURIComponent', function () {
return window.encodeURIComponent;
}).
是基于这篇文章
如何从 angularJS 模板调用 encodeURIComponent?
当这不起作用时,我尝试了一些其他建议并注入 $window,将其包装在另一个函数中并将 href 更改为 ng-href。原始版本和这个新版本都返回相同的输出。
angular.
module('machineorderDetail').
filter('encodeURIComponent', ['$window', function ($window) {
return function (input) {
return encodeURIComponent(input);
};
}]).
如果我这样做,我可以在控制台中看到预期的编码值。
angular.
module('machineorderDetail').
filter('encodeURIComponent', ['$window', function ($window) {
return function (input) {
var retVal = encodeURIComponent(input);
console.log(retVal);
return retVal;
};
}]).
我可以像这样绑定它,结果是编码值。
<div>{{MachineOrderFile.DocumentName | encodeURIComponent}}</div>
但是,当我输入 href 或 ng-href 时,该值不会被编码。
<a ng-href="#!/machineorders/fileupload/{{fileProfile.DocumentName | encodeURIComponent}}/{{$ctrl.machineorder.MachineOrderHeader.ID}}">
“日本/新加坡 PO”的值应该是 Japan%2FSingapore%20PO,但它没有改变。
任何帮助或建议将不胜感激。
对于 MikeS 在你悬停时显示编码的 url jsfiddle screenshot of jsfiddle