2016-11-28 104 views
-1

從這個鐵的Ajax元素:聚合物嵌套DOM重複預期陣列錯誤

<iron-ajax 
    id="ajax" 
    url="..." 
    handle-as="json" 
    verbose=true 
    last-response={{ajaxResponse}} 
    loading="{{cargando}}"> 
</iron-ajax> 

我得到這個鐵Ajax響應:

{ 
    "id": "3", 
    "idcontenido": "9", 
    "imagenes": ["oneimage.png", "anotherimage.png"], 
    "tipo_imagen": "img-circle", 
    "html": "Lorem ipsum" 
} 

,我需要實現一個嵌套的DOM重複結構以迭代來自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]: expected array for 'items', found Object {id: "3", idcontenido: "9", imagenes: Array[2], tipo_imagen: "img-circle", html: "Lorem ipsum"}

爲什麼? 謝謝!

+0

您得到的響應不是數組,它的對象和dom-repeat僅適用於數組 – a1626

+1

[\ [dom-repeat :: dom-repeat \]的可能重複:\ items \ ',找到對象](http://stackoverflow.com/questions/40824121/dom-repeatdom-repeat-expected-array-for-items-found-object) – a1626

回答

1

<dom-repeat>只能迭代array s,因此您無法將object s傳遞給它。您看到expected array錯誤消息,因爲您要綁定<dom-repeat>.items到,這是一個對象。

first question,您的服務已發出的數組項的對象:

{ 
    "1": [{"id": "1"}, {"id": "2"}], 
    "2": [{"id": "3"}], 
    ... 
} 

而不是數組:

[ 
    [{"id": "1"}, {"id": "2"}], 
    [{"id": "3"}], 
    ... 
] 

在這個問題上,您的服務發送單個項目對象:

{"id": "1"} 

而不是陣列:

[{"id": "1"}] 

如果真的應該是一個單一的項目對象,你可以通過只刪除外<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> 

在另一方面,如果是應該是一個數組,你需要使用我在first question中描述的技術來修復你的服務,或者在客戶端進行轉換。