0

我正在尝试使用调用 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

4

0 回答 0