以下是角度控制器中的功能。 " 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);
}
}
};
答案 0 :(得分:1)
您正在错误地使用 $('.varquantity').on('focus', selectAllOnFocus);
循环。它不会迭代数组中的元素,而是迭代对象的属性名称。在您的情况下,当您使用隐式数字索引数组时,最好使用普通的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上的文档。
答案 1 :(得分:0)
您应该将for循环更新为
for (var i = 0; i < $scope.coffees.length; i++) {
并检索
之类的值alert($scope.coffees[i].brand);
答案 2 :(得分:-1)