聚合物嵌套 dom 重复预期的阵列错误



来自这个 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应该是一个数组,则需要使用我在第一个问题中描述的技术在服务中修复它,或者在客户端中转换它。

最新更新