我希望实现一个过滤器,该过滤器最多可以说3个属性并返回与.json input
上的所有属性相匹配的结果,也称为AND
过滤器。
我想知道在应用第二个过滤器时是否有办法将我的第一个过滤器的res
(结果)作为input
传递。换句话说,我希望改变主题'从原始集合我迭代到过滤结果,并继续为每个添加的过滤器。
如果有其他使用复杂过滤器的做法,请告诉我。
以下是我的代码:
angular.module('app')
.filter('categoryFilter', function () {
return function (input, ctrl) {
if(ctrl.filtersModel) {
// 1 filter: ctrl.filtersModel > {brand: "bmw"}
// 2 filters: ctrl.filtersModel > {brand: "bmw", speed: "medium"}
var res = [];
angular.forEach(input, function(car){
angular.forEach(ctrl.filtersModel, function(value, key){
if(car[key] === value) {
// this won't obviously work:
res.push(car);
// if I was able apply first filter, then save the result and use it as an input when then 2nd filter is applied, that would work
}
});
});
return res;
}
else {
return input;
}
};
});