Angularjs 在控制器中使用多个值进行筛选
我有3个开关(复选框,它们返回true或false)在列表中进行筛选 名单如下:Angularjs 在控制器中使用多个值进行筛选,angularjs,Angularjs,我有3个开关(复选框,它们返回true或false)在列表中进行筛选 名单如下: vm.products = Product.query(); 在我的控制器中,每次更改一个开关盒/复选框时,我都要过滤vm.products 到目前为止,我得到的只是一个不起作用的过滤参数: vm.products = $filter('filter')('id', 1); 参数'filter'-sems是否指向指令?我必须这样做吗?当有多个值要检查时,创建动态过滤器函数/生成器的最佳方法是什么?我找到了一种使
vm.products = Product.query();
在我的控制器中,每次更改一个开关盒/复选框时,我都要过滤vm.products
到目前为止,我得到的只是一个不起作用的过滤参数:
vm.products = $filter('filter')('id', 1);
参数'filter'-sems是否指向指令?我必须这样做吗?当有多个值要检查时,创建动态过滤器函数/生成器的最佳方法是什么?我找到了一种使用自定义过滤器的方法
.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){console.log(typeId+':'+$event);vm.products=$filter('filter')(vm.products,{productTypeId:typeId})},但这只支持设置一个值。我如何建立一个过滤查询?你有一个可以让我玩的柱塞吗?恐怕没有(
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);
}