Example plnkr
我有一个包含其他对象的对象,如下所示:
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
属性包含在迭代中。
这对我来说似乎不一致。如何在忽略 $-前缀属性的同时循环访问集合对象?我必须手动检查key.charAt(0) !== '$'
吗?
是的,你必须自己做。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);
}
});