我正在使用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>
演示代码: http://jsfiddle.net/stefanos/kTYdd/26/
的问候,
斯特凡
答案 0 :(得分:1)
尝试更新您的过滤器:
.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;
}
});