我在这里创建了我的 jsfiddle 以供参考:http: //jsfiddle.net/7gzDG/
$scope.list = [{
"Colors": ["Blue", "Eggplant", "Green", "Pink", "Yellow"],
"Brand": "BRAND A",
"Name": "Item 1"
}, {
"Colors": ["Black", "Dark Teal", "Eggplant"],
"Brand": "BRAND A",
"Name": "Item 2"
}, {
"Colors": ["Ivory", "Pink"],
"Brand": "BRAND A",
"Name": "Item 3"
}, {
"Colors": ["Black", "Brown", "Red", "White"],
"Brand": "BRAND B",
"Name": "Item 4"
}];
以上我的产品有
- 一组颜色
- 特定品牌
我可以将每个不同的列表构建为复选框。
myApp.filter('uniqueColors', function () {
return function (list) {
var colors = {};
angular.forEach(list, function (obj) {
angular.forEach(obj.Colors, function (color) {
colors[color] = color;
})
});
//console.log(colors);
var uniqueColors = []
for (var key in colors) {
uniqueColors.push(key);
}
return uniqueColors;
}
});
myApp.filter('uniqueBrands', function () {
return function (list) {
var brands = {};
angular.forEach(list, function (obj) {
brands[obj.Brand] = obj.Brand;
});
//console.log(brands);
var uniqueBrands = []
for (var key in brands) {
uniqueBrands.push(key);
}
return uniqueBrands.sort();
}
});
我的问题是,当我检查它们时,我无法弄清楚如何过滤原始结果集。例如,如果我选中“蓝色”,我希望保留所有颜色为蓝色的产品。
如果我选中蓝色和红色,我希望保留所有带有蓝色或红色的产品。
如果我检查品牌 A 的蓝色和红色,我希望品牌 A 的所有产品中都包含蓝色或红色。
谢谢参观!