一尘不染

角函数滤波器比较器示例

angularjs

有人可以给我一个如何使用角度滤波器比较器的例子吗?

从官方文档:

函数(实际的,期望的):将为函数提供对象值和谓词值进行比较,如果该项目应包含在过滤结果中,则应返回true。

有一篇很棒的博客文章谈论Angular过滤器:
AngularJS过滤器的乐趣-第1部分:filter过滤器

但是,在最后,我在寻找功能比较器的一些有用示例,但仍然没有发现任何结果。

对于更特殊的匹配需求,您可以传递函数而不是布尔值作为比较器参数。

我自己尝试了几种组合。在表达式的末尾添加函数或指向范围内的函数都不会起作用。


阅读 223

收藏
2020-07-04

共1个答案

一尘不染

我做了这样的事情,因为Angular会迭代对象,并尝试将它们整体以及各个属性进行递归比较。

// in your controller

$scope.filterMyData = function (input, search_param) {

  if (input && input.propertyWeCareAbout) {

    // it's ugly, but to quickly get something done you can ignore search_param

    return input.propertyWeCareAbout === $scope.SomeOtherData;

  }

  else {

    return angular.equals(input, search_param);

  }

}


<span>Quick search: </span><input type="search" ng-model='quickSearch'/><br/>





<table>

  <tr ng-repeat="obj in someHttpService.dataAsArray | filter:quickSearch:filterMyData">

    <td>{{ obj.key }} </td>

    <td>{{ obj.propertyWeCareAbout }}</td>

  </tr>

</table>

就我而言,“ quickSearch”在很大程度上是没有意义的,并且过滤是通过不同的逻辑进行的。您始终可以通过在ng-repeat中添加“ |
filter:quickSearch”,最后始终链接另一个过滤器。

2020-07-04