嵌套数组ng-repeat错误:[ngRepeat:dupes]

时间:2014-10-27 20:24:26

标签: angularjs

我有一个对象我试图迭代并且无法嵌套ng-repeats

$scope.report_data = {
  data [
    system_0: [
      0: "string",
      1: 435,
      2: "another value"
    ]
  ], 
  headers [
    0: [
      0:"title"
      1: "CHA"
    ]
  ]
}

我正在尝试构建一个包含标题的表格,并且每个数据都映射到标题。

我现在所拥有的是

<table>
  <thead>
    <tr>
      <th ng-repeat="header in report_data.headers">{{ header.0 }}</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td ng-repeat="system in report_data.data">
        <span ng-repeat="_item in system">{{ _item }}</span>
      </td>
    </tr>
  </tbody>
<table>

但是我无法迭代每个系统中的每个项目并将其添加为列。我收到的错误是Error: [ngRepeat:dupes]

迭代嵌套数组的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

默认情况下,ng-repeat使用整个对象的哈希来跟踪插入/删除,以便优化DOM操作。 T 他必须是独一无二的,否则就会失败。

因此具有相同属性和值的两个对象将发生冲突。

您可以使用track by语法明确指出要跟踪的属性,但同样,这必须是唯一的。

作为最后的手段,您可以使用track by $index来避免重复输入。

ng-repeat="widget in widgets track by $index"