来自这个 iron-ajax 元素:
<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::d om-repeat]: 'items' 的预期数组, 找到对象 {id: "3", idcontenido: "9", imagenes: Array[2], tipo_imagen: "img-circle", html: "Lorem ipsum"}
为什么? 谢谢!
<dom-repeat>
只能迭代数组,因此无法将对象传递给它。您看到expected array
错误消息,因为您将<dom-repeat>.items
绑定到ajaxResponse
,这是一个对象。
在第一个问题中,您的服务正在发送数组项的对象:
{
"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
应该是一个数组,则需要使用我在第一个问题中描述的技术在服务中修复它,或者在客户端中转换它。