从这个铁阿贾克斯元素:
<iron-ajax
id="ajax"
url="..."
handle-as="json"
verbose=true
last-response={{ajaxResponse}}
loading="{{cargando}}">
</iron-ajax>
我得到了这个铁阿贾克斯回应:
{
"id": "3",
"idcontenido": "9",
"imagenes": ["oneimage.png", "anotherimage.png"],
"tipo_imagen": "img-circle",
"html": "Lorem ipsum"
}
我需要实现一个嵌套的dom-repeat结构,以便从imagenes属性中迭代项目。这是我的代码:
<template is="dom-repeat" items="[[ajaxResponse]]" as="registro">
<template is="dom-repeat" items="[[registro.imagenes]]" as="imagen">
<img class="[[registro.tipo_imagen]]" src="img/[[imagen]]" alt="" width="140" height="140" />
</template>
</template>
但是我收到了这个错误:
[dom-repeat :: dom-repeat]:&#39; items&#39;的预期数组,找到对象{id:&#34; 3&#34;,idcontenido:&#34; 9&#34; ,imagenes:Array [2],tipo_imagen:&#34; img-circle&#34;,html:&#34; Lorem ipsum&#34;}
为什么呢? 谢谢!
答案 0 :(得分:1)
<dom-repeat>
只能迭代array秒,因此您无法将object传递给它。您之后看到expected array
错误消息,因为您将<dom-repeat>.items
绑定到ajaxResponse
,这是一个对象。
在first question中,您的服务正在发送数组项的对象:
{
"1": [{"id": "1"}, {"id": "2"}],
"2": [{"id": "3"}],
...
}
而不是数组:
[
[{"id": "1"}, {"id": "2"}],
[{"id": "3"}],
...
]
在这个问题中,您的服务正在发送单个项目对象:
{"id": "1"}
而不是数组:
[{"id": "1"}]
如果ajaxResponse
确实应该是单个项目对象,则可以通过删除外部<dom-repeat>
来修复模板,直接绑定到ajaxResponse.imagenes
:
<template is="dom-repeat" items="[[ajaxResponse.imagenes]]" as="imagen">
<img class="[[registro.tipo_imagen]]" src="img/[[imagen]]" alt="" width="140" height="140" />
</template>
另一方面,如果ajaxResponse
应该是一个数组,那么您需要在服务中修复它,或者使用我在{中描述的技术在客户端中转换它{3}}