我有一个我想要ng-repeat
通过的对象。
对象是这样的:
ctrl.obj = {
"1": ["val1", "val2", ... ],
"3": ["val1", "val2", ... ],
...
"20": ["val1", "val2", ... ]
}
当我尝试:
<ul ng-repeat="item in ctrl.obj"></ul>
我得到了这个角度误差:
Error: ngRepeat:dupes
Duplicate Key in Repeater
标准解决方案是使用track by $index
。但这对我的方案不起作用,因为它现在会导致0
和20
之间的每个整数出现,即使我只有1
,3
,{{1我理想情况下不喜欢重新格式化对象,因为它是从应用程序外部加载的〜尽管这似乎是Angular的反复出现的必要条件。
我有什么选择重复此对象?
答案 0 :(得分:1)
此对象是一个字典,其中每个属性都是一个键,每个数组都是一个值。要正确迭代,您需要两个单独的ng-repeat
。如下所示:
<div ng-repeat="(key, value) in ctrl.obj">
{{key}} : {{value}}
<div ng-repeat="item in value">
{{item}}
</div>
</div>
此处可能还有其他内容,因为我无法重现您在使用此语法时遇到的错误,但您声明语法会在您的情况下导致错误。您是否可以发布实际导致此错误的数据样本?
http://plnkr.co/edit/LvvpxNqM6LuGVel4WQt9?p=preview
此plunker正在使用您的原始<ul>
,并且它不会产生您描述的任何错误。似乎您还没有提供您要在此处显示的对象的准确表示。