Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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
Javascript 角度多重过滤器,第二个过滤器为空?_Javascript_Angularjs - Fatal编程技术网

Javascript 角度多重过滤器,第二个过滤器为空?

Javascript 角度多重过滤器,第二个过滤器为空?,javascript,angularjs,Javascript,Angularjs,我有一个ng重复(jade): 在我的app.js中,我有两个过滤器: .filter('product_sex', function(){ return function(input, sex){ if(input == undefined){ input = []; } var output = []; if(sex == 'undefined' || sex =='all'){

我有一个ng重复(jade):

在我的app.js中,我有两个过滤器:

.filter('product_sex', function(){
    return function(input, sex){

        if(input == undefined){
            input = [];
        }
        var output = [];

        if(sex == 'undefined' || sex =='all'){
            output = input;
        }

            for(var i =0; i < input.length; i++){
                var item = input[i];

                if (item.product.sex == sex){
                    output.push(item);
                }
            }


        return output;
    }
})
.filter('product_stock', function(){
    return function(input, stockKind){

        if(input == 'undefined'){
            input = [];
        }

        var output = [];

        if (stockKind == 'undefined' || stockKind == 'all'){
            output = input;
        }

            for(var i=0; i< input.length; i++){
                var item = input[i];

                if(item.stock < 0 && item.status != 'Niet leverbaar' && stockKind == 'online'){
                    output.push(item);
                }else if(item.stock > 0 && item.status != 'Niet leverbaar' && stockKind =='fysiek'){
                    output.push(item);
                }
            }


    }
})
.filter('product_sex',function(){
返回函数(输入,性别){
如果(输入==未定义){
输入=[];
}
var输出=[];
if(sex='undefined'| | sex='all'){
输出=输入;
}
对于(变量i=0;i0&&item.status!='Niet leverbaar'&&stockKind=='fysiek'){
输出推送(项目);
}
}
}
})
我想对我的ng repeat应用两个筛选器。第一个过滤器工作正常,但当我添加第二个过滤器(如示例中所示)时,它将不返回任何内容。角度误差日志显示
TypeError:无法读取
product\u stock filter
中for循环未定义的属性“length”。我看不出我做错了什么,所以我想知道你是否能再次帮助我


在我的控制器中,我用“全部”填充
$scope.stockKind
$scope.filter\u sex
。稍后,我可以在单击链接时更改该值,如
ng click='stockKind=“online”
您的错误在代码的以下部分

if(input == 'undefined'){
    input = [];
}
你应该把它换成

if(input == null){
    input = [];
}


两者完全相同

调试您的代码并检查
产品库存中
输入的
中的内容
过滤器您是否确定OP预期的是
未定义的
值而不是字符串
未定义的
?此外
未定义的
不是关键字。要测试它,最好使用以下测试:
typeof===“undefined”
。请参阅“不确定”,但他为另一个筛选器执行了此操作…或者更简单地说,
if(!input)
Yes,他执行以下测试
if(sex='undefined'| | sex='all')
所以我假设'undefined'和'all'是
sex的可能值,因为'male'和'female'当然是。
if(input == null){
    input = [];
}
if(input === undefined || input === null){
    input = [];
}