AngularJS:如何显示来自多个复选框的多个结果

AngularJS:如何显示来自多个复选框的多个结果,angularjs,checkbox,filter,angular-ngmodel,Angularjs,Checkbox,Filter,Angular Ngmodel,我正在使用AngularJS过滤葡萄酒列表的结果。葡萄酒按颜色(红、白、玫瑰、香槟)和其他参数分类 当使用复选框选中一种颜色(例如红色)时,将显示过滤后的红酒列表。但当选择两种颜色时,不会显示任何结果(例如红色和白色) 我的愿望: 即使选中了红色、白色和香槟色,也会显示(红色、白色和香槟酒,或其他参数)列表。我的主要愿望是能够选择多个参数,并显示所有选中的参数。能够检查颜色,国家 下面是代码示例: <div ng-controller="MainCtrl"> <input

我正在使用AngularJS过滤葡萄酒列表的结果。葡萄酒按颜色(红、白、玫瑰、香槟)和其他参数分类

当使用复选框选中一种颜色(例如红色)时,将显示过滤后的红酒列表。但当选择两种颜色时,不会显示任何结果(例如红色和白色)

我的愿望:

  • 即使选中了红色、白色和香槟色,也会显示(红色、白色和香槟酒,或其他参数)列表。我的主要愿望是能够选择多个参数,并显示所有选中的参数。能够检查颜色,国家
下面是代码示例:

<div ng-controller="MainCtrl">

<input ng-model="characteristics.red" type="checkbox" >red</input>
<input ng-model="characteristics.white" type="checkbox" >white</input>
<input ng-model="characteristics.rose" type="checkbox" >rose</input>
<input ng-model="characteristics.champagne" type="checkbox" >champagne</input>
    <br><br>

<div ng-repeat="wine in filtered= (wines |filteredstoves:characteristics) |       filteredstoves:characteristics">

    {{wine.name}} - {{wine.characteristics}}
        </div>
    <br><br>
     Filtered list has {{filtered.length}} items
</div>

红色
白色
玫瑰
香槟


{{wine.name}-{{wine.characteristics}

筛选列表有{Filtered.length}}项
代码演示:

问候,


Stéphane

尝试如下更新您的过滤器:

.filter('filteredstoves', function() {
  return function(stoves, characteristics) {
    var result = []; 
    angular.forEach(characteristics, function(value, key) {
      if(value) {
        for(var index = 0; index < stoves.length; index++) {
          var wine = stoves[index];
          if(wine.characteristics.indexOf(key) >= 0) {
            if (result.indexOf(wine) === -1){
                result.push(wine);
            }
          }
        }
      }
    });
    return result;
  }
});
.filter('filteredstoves',function(){
返回功能(炉灶、特性){
var结果=[];
角度。forEach(特征、功能(值、键){
如果(值){
对于(var指数=0;指数=0){
如果(结果索引(葡萄酒)=-1){
结果:推(酒);
}
}
}
}
});
返回结果;
}
});

谢谢您的快速回复!!我刚试过,效果很好!!我试了几个小时,但没有成功。。。。非常感谢!!谢谢你的帮助。。。。。可以过滤结果。我添加了更多,如果它选中了“红色”和“红色”,则会显示所有带有红色和红色的条目,它不会被过滤。如果我检查香槟和莱格酒也是一样的@斯特凡:问题是什么?我不明白我的英语不是很好。例如,我的愿望是:如果red复选框和leger都被选中,那么将显示一个列表,其中只包含带有leger参数的红葡萄酒条目,而不是包含太多leger或red的其他条目。听起来很难建立一个代码来过滤所有这些参数。Regards@St埃芬:对不起,我还是不明白你的意思。你能把这个问题作为一个单独的问题提出来,这样你也能吸引更多的人的注意吗?在这个问题上,你可以举出例子,上下文,。。让它更清楚。这就是你应该做的