聚合物嵌套dom-repeat预期的数组错误

时间:2016-11-28 12:09:21

标签: polymer

从这个铁阿贾克斯元素:

<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;}

为什么呢? 谢谢!

1 个答案:

答案 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}}