【发布时间】:2016-08-23 07:49:13
【问题描述】:
我有一个 ng-repeat(玉):
.col-lg-4.col-md-4.col-sm-6.col-xs-12.product.product-grid(ng-repeat='item in collection | product_sex:filter_sex | product_stock:stockKind')
在我的 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);
}
}
}
})
我想将这两个过滤器都应用到我的 ng-repeat。第一个过滤器工作正常,但是当我添加第二个过滤器(如示例中)时,它不会返回任何内容。角度错误日志显示TypeError: Cannot read property 'length' of undefined 用于product_stock filter 中的for 循环。我看不出我做错了什么,所以我想知道您是否可以再次帮助我?
在我的控制器中,我将$scope.stockKind 和$scope.filter_sex 填充为“全部”。后来我可以在单击链接时更改它的值,例如ng-click='stockKind="online"'
【问题讨论】:
-
调试您的代码并检查您的
input过滤器中input的内容
标签: javascript angularjs