Reputation: 2169
I have several age range filters done in my AngularJS app. Of the 4 of them, one doesn't work properly (results don't match the filter), and I can't seem to find why.
You can see a working example here.
The filters look like this:
.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;
}
})
And in the view I do this:
<div ng-repeat="item in data
| five:fiveFilter
| adult:adultFilter
| young:youngFilter
| child:childFilter">
{{item.age}}
</div>
As you will see, all filters work except the young
one.
What am I missing?
Upvotes: 0
Views: 50
Reputation: 452
Change these filters code:
.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;
}
})
Upvotes: 1