angularjs - 调用angularjs过滤器时如何转义 '!'

标签 angularjs filter

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

最佳答案

你无法逃避它,因为 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);
    }
  }]);
}]);

关于angularjs - 调用angularjs过滤器时如何转义 '!',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31955000/

相关文章:

javascript - 使用 javascript 从 WordPress 页面读取 HTML

javascript - 如何将外部库附加到 Protractor 配置文件?

python - 列表理解与 lambda + 过滤器

excel - 如何使用 Google 表格/Excel 中的搜索列表过滤字符串数据?

haskell - 使用 Iteratee 库编写 "wc -l"- 如何过滤换行符?

javascript - 如何将数据从 angularJS 工厂填充到 Controller ?

javascript - 为什么 rowsAffected 不返回整数

javascript - Angular js 模型值变化没有反射(reflect)在 ui 中

Javascript 过滤器不适用于多个条件

javascript - 使用 Angular.js 高级过滤数据