【问题标题】:How to escape '!' when call angularjs filter如何逃脱'!当调用 angularjs 过滤器时
【发布时间】:2015-08-12 02:17:56
【问题描述】:

AngularJS 过滤器保护了一些特殊字符。可以通过在字符串前面加上! 来否定谓词,但现在我想过滤掉包含“!”的项目特殊字符。我怎样才能逃脱这个特殊的字符'!请问?

【问题讨论】:

    标签: angularjs filter


    【解决方案1】:

    你无法逃脱它,因为filter过滤doesn't presume it

    但您可以使用 predicate function 覆盖 ! 谓词的默认行为并装饰 filter 而不会破坏其他任何内容。

    app.config(['$provide', function ($provide) {
      function bang(value) {
        return value.indexOf('!') >= 0;
      };
    
      function bangless(value) {
        return value.indexOf('!') < 0;
      };
    
      $provide.decorator('filterFilter', ['$delegate', function ($delegate) {
        return function (array, expression, comparator) {
          if (expression === '!') {
            expression = bang;
          } else if (expression === '!!') {
            expression = bangless;
          }
    
          return $delegate(array, expression, comparator);
        }
      }]);
    }]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 2017-10-31
      • 2016-02-11
      相关资源
      最近更新 更多