Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 在控制器中使用多个值进行筛选_Angularjs - Fatal编程技术网

Angularjs 在控制器中使用多个值进行筛选

Angularjs 在控制器中使用多个值进行筛选,angularjs,Angularjs,我有3个开关(复选框,它们返回true或false)在列表中进行筛选 名单如下: vm.products = Product.query(); 在我的控制器中,每次更改一个开关盒/复选框时,我都要过滤vm.products 到目前为止,我得到的只是一个不起作用的过滤参数: vm.products = $filter('filter')('id', 1); 参数'filter'-sems是否指向指令?我必须这样做吗?当有多个值要检查时,创建动态过滤器函数/生成器的最佳方法是什么?我找到了一种使

我有3个开关(复选框,它们返回true或false)在列表中进行筛选

名单如下:

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);
}