使用AngularJS在ng-repeat中无法使用多个复选框过滤器

时间:2018-02-02 15:28:11

标签: javascript angularjs angularjs-ng-repeat angular-filters

我在AngularJS应用程序中完成了几个年龄范围过滤器。 其中4个中有一个不能正常工作(结果与过滤器不匹配),我似乎无法找到原因。

您可以看到一个有效的例子here

过滤器如下所示:

.filter('five', function () {
  return function ( items,filter) {
      if(filter)return items.filter(x=>x.age<=4);
      else return items;
  }
})

.filter('child', function () {
  return function ( items,filter) {
      if(filter)return (items.filter(x=>x.age>=5) && items.filter(x=>x.age<=14));
      else return items;
  }
})


.filter('young', function () {
  return function ( items,filter) {
      if(filter)return (items.filter(x=>x.age>=14) && items.filter(x=>x.age<=17));
      else return items;
  }
})


.filter('adult', function () {
  return function ( items,filter) {
      if(filter)return items.filter(x=>x.age>=18);
      else return items;
  }
})

在视图中我这样做:

<div ng-repeat="item in data 
    | five:fiveFilter 
    | adult:adultFilter 
    | young:youngFilter 
    | child:childFilter">
 {{item.age}}
</div>

正如您将看到的,除了young之外,所有过滤器都有效。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

更改这些过滤器代码:

.filter('child', function () {
  return function ( items,filter) {
      if(filter)return (items.filter(x=>x.age>=5 && x.age<=14));
      else return items;
  }
})


.filter('young', function () {
  return function ( items,filter) {
      if(filter)return (items.filter(x=>x.age>=14 && x.age<=17));
      else return items;
  }
})