angularjs1中ng-model中不能使用自定义的过滤器吗?

发布于 2022-09-11 21:08:18 字数 2000 浏览 37 评论 0

起因是由于ionic.bundle.js中有一段关于特殊符号&、<、>替换的代码,导致模块中正常的符号使用出现问题,为了不动框架代码(因为不知道会不会有其他未知的风险),所以写了过滤器让这三个符号正常使用。

clipboard.png
框架中代码我也贴出来:

function encodeEntities(value) {
  return value.
    replace(/&/g, '&amp;').
    replace(SURROGATE_PAIR_REGEXP, function(value) {
      var hi = value.charCodeAt(0);
      var low = value.charCodeAt(1);
      return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';
    }).
    replace(NON_ALPHANUMERIC_REGEXP, function(value) {
      return '&#' + value.charCodeAt(0) + ';';
    }).
    replace(/</g, '&lt;').
    replace(/>/g, '&gt;');
}

这是我自己写的过滤器的代码:

.filter("replace",function () {
        //替换成&
        return function replace(str){
            return str.replace(/&amp;/g, '&').replace(/&gt;/g, '>').replace(/&lt;/g, '<');
        }
    })

这是模块中同时使用ng-model和过滤器的代码:

<li class="basInfo_listItme" style="border-bottom:0;">
          <textarea rows="3" class="modalTextArea" ng-model="$parent.modalInfo.wpmc|replace"></textarea>
        </li>

运行后页面立马报错:
图片描述

想要点击textarea修改里面的内容,发现无法修改也无法删除,控制台报错如下:

clipboard.png
点开错误定位到框架文件:经查,问题缘由不在此处

clipboard.png
在页面上其他地方使用无上述问题,完全正确:

<li class="basInfo_listItme">
                <span><i style="color:red">*</i>品牌:</span>
                <span>
                    <i ng-bind="pageParams.baseGoodsTrademark|replace|nullValue:''"></i>
                </span>
            </li>

上网搜了资料,没有能解决的方法,有没有大神有相关经验,诚心求教,非常感谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文