TypeError:无法读取未定义的属性“age”

时间:2016-01-26 07:12:37

标签: angularjs

以下代码是我的视图“

   <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'

我的代码有什么问题?请解释

2 个答案:

答案 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