如何在使用 angular.forEach 迭代时忽略 $-前缀属性



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);
  }
});

最新更新