使用AngularJS自定义过滤器基于另一个集合过滤一个集合

时间:2014-05-28 14:02:37

标签: javascript angularjs angularjs-filter

我需要根据angularjs中的另一个集合过滤对象集合。我需要创建一个自定义过滤器我确定但没有找到相似的示例。所以我有一个“equipmentOptions”列表(基本上它们是产品定制,例如你的汽车中的高级立体声)。除非您已经选择了其他“equipmentOptions”,否则某些“equipmentOptions”不可用。

可用的equipmentOptions是$ scope.product.equipmentOptions 已选择的equipmentOptions是$ scope.product.selectedOptions。

equipmentOptions有一个属性requiredParents,它是其他设备选项的id的集合。如果$ scope.product.selectedOptions中存在任何这些requiredParents,则应显示equipmentOption。

这是我到目前为止所尝试的无济于事:

<div ng-repeat="option in product.equipmentOptions | optionsFilter:product.selectedOptions">

optionsFilter.js

myApp.filter('optionsFilter', function () {
return function (selectedOptions) {
    // I'm just trying to get the list of selected options as well as the current option here for filtering, how do I get the current option?
};

});

1 个答案:

答案 0 :(得分:0)

您的第一个参数是product.equipmentOptions的列表。第二个参数是product.selectedOptions。像这样写下你的过滤器:

myApp.filter('optionsFilter', function() {
  return function(equipmentOptions, selectedOptions) {
    var filteredOptions = [];
    angular.forEach(equipmentOptions, function(option) {
      if(/*option meets criteria*/) {
        filteredOptions.push(option);
      }
    });
    return filteredOptions;
  }
});