AngularJS:如何显示来自多个复选框的多个结果
我正在使用AngularJS过滤葡萄酒列表的结果。葡萄酒按颜色(红、白、玫瑰、香槟)和其他参数分类 当使用复选框选中一种颜色(例如红色)时,将显示过滤后的红酒列表。但当选择两种颜色时,不会显示任何结果(例如红色和白色) 我的愿望:AngularJS:如何显示来自多个复选框的多个结果,angularjs,checkbox,filter,angular-ngmodel,Angularjs,Checkbox,Filter,Angular Ngmodel,我正在使用AngularJS过滤葡萄酒列表的结果。葡萄酒按颜色(红、白、玫瑰、香槟)和其他参数分类 当使用复选框选中一种颜色(例如红色)时,将显示过滤后的红酒列表。但当选择两种颜色时,不会显示任何结果(例如红色和白色) 我的愿望: 即使选中了红色、白色和香槟色,也会显示(红色、白色和香槟酒,或其他参数)列表。我的主要愿望是能够选择多个参数,并显示所有选中的参数。能够检查颜色,国家 下面是代码示例: <div ng-controller="MainCtrl"> <input
- 即使选中了红色、白色和香槟色,也会显示(红色、白色和香槟酒,或其他参数)列表。我的主要愿望是能够选择多个参数,并显示所有选中的参数。能够检查颜色,国家
<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埃芬:对不起,我还是不明白你的意思。你能把这个问题作为一个单独的问题提出来,这样你也能吸引更多的人的注意吗?在这个问题上,你可以举出例子,上下文,。。让它更清楚。这就是你应该做的