我有一个包含其他对象的对象,如下所示:
var collection = {
$type: 'people',
'2a4a24': {name: "Moroni", age: 50},
'457b9c': {name: "Tiancum", age: 43},
'59d8ae': {name: "Jacob", age: 27},
};
如果我使用ng-repeat
,则忽略$type
属性。但是,当我使用angular.forEach
时,$type
属性包含在迭代中。
这对我来说似乎不一致。如何在忽略$ -prefixed属性的同时迭代集合对象?我是否必须手动检查key.charAt(0) !== '$'
?
答案 0 :(得分:2)
是的,你必须自己做。 Angular会在某些指令中自动执行此操作,以防止它迭代始终以美元开头的内部属性。跟踪器上有一个问题:
https://github.com/angular/angular.js/issues/6266
但是你的绝对正确,因为它在受影响的指令的API中完全没有记载,所以它是不一致的。
你的key.charAt(0) !== '$'
会解决问题:
angular.forEach($scope.people, function (person, key) {
if (key.charAt(0) !== '$') {
$scope.myData.push(person);
}
});