2015-07-11 2 views
0

Следующее является функцией в угловом контроллере. «alert (coffee.brand)» или любая другая часть массива, печатает «undefined», что явно не так. Странная часть, undefined печатает правильное количество раз в цикле for, поэтому он знает, что массив заполнен, он просто не может читать данные. мысли? Заранее спасибо!пульт углового контроллера пуст, хотя я только что определил его

$scope.activate = function(id){ 


      $scope.coffees = 
    [ 
    {'id': 1, 
    'brand': 'Folgers', 
    'name': 'Regular', 
    'country': 'America', 
    'reviews': [ 
      {'rating': 3, 
      'comment': "gross", 
      'reviewer': "James" 
      } 
    ] 
    }, 
    {'id': 2, 
    'brand': 'Starbucks', 
    'name': 'Mocha', 
    'country': 'America', 
    'reviews': [ 
    {'rating': 7, 
    'comment': 'insane!', 
    'reviewer': 'Bob' 
    }, 
    {'rating': 5, 
    'comment': 'solid...', 
    'reviewer': 'Joe' 
    } 
    ] 
    } 
    ]; 

      for (coffee in $scope.coffees){      

        alert (coffee.brand); 
        if (coffee.id == id){ 
          $scope.currCoffee = coffee; 
          alert("here") 
          alert ($scope.currCoffee.id); 
        } 
      } 

    }; 
+1

кофе - это не сам объект, поэтому идите, как '$ scope.coffees [coffee]' – vinayakj

ответ

-1

кофе - это не сам объект, поэтому идите, как $ scope.coffees [coffee].

Для получения дополнительной информации

  • for...in петли

    Он перебирает перечисляемые собственные и перечисляемые наследуемые свойства.

+0

, почему downvote .. atleast поставить комментарий, чтобы он мог также понять – vinayakj

1

Вы используете петлю for in неправильно. Он не перебирает элементы в массиве, а имена свойств объекта. В вашем случае, как вы используете неявно численно индексированный массив, было бы лучше использовать обычный for цикл, например, так:

for (var i = 0; i < $scope.coffees.length; i++) {   
    var coffee = $scope.coffees[i];    
    alert (coffee.brand); 
    if (coffee.id == id){ 
     $scope.currCoffee = coffee; 
     alert("here") 
     alert ($scope.currCoffee.id); 
    } 
} 

Смотрите документацию на более MDN для получения дополнительной информации о цикле for in.

Смежные вопросы