以下代码是我的视图“
<div ng-controller="myController">
<div ng-repeat="obj in myData.arr | myfilter">
{{obj}}
</div>
</div>
这是我的JavaScript代码。我使用angular创建了一个自定义过滤器。
app.controller('myController', function($scope){
$scope.myData ={arr: [{name:'Rohith',age:23},{name:'Arun',age:24},{name:'Venki',age:25}]};
});
app.filter('myfilter',function(){
return function(input, minage){
var filtered = [];
if(!minage){
minage = 24;
}
for(var i=0;i<=input.length;i++){
var value = input[i];
if(value.age >= minage){
filtered.push(value);
}
}
return filtered;
}
});
当我试图跑步时,控制台显示:
TypeError:无法读取未定义的属性'age'
我的代码有什么问题?请解释
答案 0 :(得分:1)
问题出在数组索引
中for(var i=0;i<=input.length;i++){
}
i
应小于input.length
不小于或等于
所以,它应该是:
for (var i = 0; i < input.length; i++) {
}
Plunker:https://plnkr.co/edit/MqNA4KKayqjV8gDNbPGB?p=preview
答案 1 :(得分:0)
您的input
变量等于{name:'Rohith',age:23}
单个对象而不是数组。您不应该像这样访问
var value = input[i];
应该是
var value = input