Javascript 角度多重过滤器,第二个过滤器为空?
我有一个ng重复(jade): 在我的app.js中,我有两个过滤器: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'){
.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 = [];
}