AngularJS,复杂滤波器

时间:2017-11-03 12:59:22

标签: angularjs filter

我希望实现一个过滤器,该过滤器最多可以说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;
    }
  };
});

0 个答案:

没有答案