【问题标题】:Angularjs ng-repeat object in object error: duplicates in repeater [duplicate]对象错误中的Angularjs ng-repeat对象:重复器中重复[重复]
【发布时间】:2018-07-12 23:48:34
【问题描述】:

我想要实现的是在我的嵌套对象上使用ng-repeat 进行简单迭代,看起来像这样

$scope.data = {
  name: "",
  id: "",
  nestedObj: {
     prop1: "string",
     prop2: false,
     prop3: ""
  }
}; 

在我看来我是这样尝试的

<div ng-repeat="(key, value) in data.nestedObj">
	{{key}} : {{value}}
</div>

...但我经常收到以下控制台错误:

Error: Duplicates in a repeater are not allowed. Repeater: (key, value) in data.type key: string

我错过了什么还是我做错了什么?

更新!

所以在Sajeetharan 的回答和Slava Utesinov 的评论之后,我设置了一个Plunkr 来试一试。令人惊讶的答案是,如果一个对象内部有多个“空”键(作为值的空字符串),您显然无法迭代该对象。

更新 2

另外,您似乎不能两次使用相同的字符串值...天哪,我喜欢 Angular :)

结局更新

正如SajeetharanSlava Utesinov 提到的,track by $index 为我解决了这个问题

【问题讨论】:

  • 您有两个具有相同prop2 名称的属性。
  • 我的错-谢谢,我更新了问题。但这不是问题
  • 您应该通过 plunker 重现您的错误。可能是nestedObj 是数组吗?
  • 所以修改成这个ng-repeat="(key, value) in data.nestedObj track by $index"
  • 我要试一试,用结果更新我的问题!

标签: javascript angularjs duplicates angularjs-ng-repeat


【解决方案1】:

您的对象中缺少一个括号。

试试这个:

$scope.data = {
  name: "",
  id: "",
  nestedObj: {
     prop1: "string",
     prop2: false,
     prop2: ""
  } 
};

【讨论】:

    猜你喜欢
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 2019-08-28
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多