我有3个开关(复选框,它们返回true或false)来过滤列表。
清单:
vm.products = Product.query();
在我的控制器中,我想过滤vm.products,每当其中一个开关盒/复选框被更改时。
我到目前为止所有这一切都是无效的,过滤器论证:
vm.products = $filter('filter')('id', 1);
参数'过滤器' - 像它指向指令的sems?我必须这样做吗?当有多个值要检查时,制作动态过滤器函数/构建器的最佳方法是什么?
答案 0 :(得分:0)
我找到了一种使用自定义过滤器的方法;
.filter("myFilter", function(){
return function(products, productTypes){
var selectedProducts = [];
for (i = 0; i < products.length; i++) {
if (productTypes.indexOf(products[i].productTypeId.toString()) > -1) {
selectedProducts.push(incidents[i]);
}
}
return selectedProducts;
};
})
然后我在我的控制器中使用它来调用过滤器功能;
vm.filterTypeUpdated = function ($event, typeId) {
var productTypesId = "";
if (vm.filterType1)
productTypesId += "1,";
if (vm.filterType2)
productTypesId += "2,";
if (vm.filterType3)
productTypesId += "3,";
vm.productsRoot = $filter('myFilter')(vm.products, productTypesId);
}
我觉得这不是最干净的方式,但它确实有效。如果有任何关于优化这一点的输入,我很满意: - )