有人可以给我一个如何使用角度滤波器比较器的例子吗?
从官方文档:
函数(实际的,期望的):将为函数提供对象值和谓词值进行比较,如果该项目应包含在过滤结果中,则应返回true。
有一篇很棒的博客文章谈论Angular过滤器: AngularJS过滤器的乐趣-第1部分:filter过滤器
filter
但是,在最后,我在寻找功能比较器的一些有用示例,但仍然没有发现任何结果。
对于更特殊的匹配需求,您可以传递函数而不是布尔值作为比较器参数。
我自己尝试了几种组合。在表达式的末尾添加函数或指向范围内的函数都不会起作用。
我做了这样的事情,因为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”,最后始终链接另一个过滤器。