我需要基于angularjs中的另一个集合过滤对象的集合。我敢肯定,我需要创建一个自定义过滤器,但没有找到类似的示例。因此,我列出了“ equipmentOptions”(基本上是产品自定义项,例如汽车中的高级立体声音响)。除非您已选择其他“ equipmentOptions”,否则某些“ equipmentOptions”不可用。

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

equipmentOptions具有属性requiredParents,它是其他设备选项的ID的集合。如果$ scope.product.selectedOptions中存在这些requiredParent中的任何一个,则应显示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?
};


});

最佳答案

您的第一个参数是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;
  }
});

10-07 17:21