在过滤器中的表达式中使用“或”,angularJS

时间:2014-04-04 12:35:18

标签: angularjs

来自文档: 对象:模式对象可用于过滤数组包含的对象的特定属性。例如{name:“M”,phone:“1”}谓词将返回一个项目数组,其属性名称包含“M”,属性手机包含“1”。

是否可以返回包含属性名称的数组:“M” OR phone:1?

或者我是否必须为此编写自定义过滤器?

ng-options="m.mc_title for m in mainCategories | filter:{mc_schema:activeSchema.sch_id, all:true}"

上述代码过滤了两个属性必须为true(&&)。如果它们中的任何一个为真,我希望它过滤。(/ p)

1 个答案:

答案 0 :(得分:0)

我认为,为此,您应该定义自己的过滤器,将'或'表达式作为参数处理。这是我为你做的一个例子:

http://plnkr.co/edit/qwJm2fy6JmdWYG2yR2it?p=preview

// Receive a JSON with properties that serve as OR clause.
// For example, this one would give you any object whose NAME is JOHN or whose ID is 123.
$scope.model.filteredData = $filter('orArray')($scope.model.data, {name: 'john', id: '123'});

过滤器的名称是'orArray'并收到两件事:

  • 您要过滤的元素列表
  • 包含您要过滤的属性的JSON,由{filterProperty: filterValue}
  • 指定

编辑:我将内联过滤器添加到了plnkr

<li ng-repeat="element in model.data | orArray:{name: 'john', id: '123'}">