Значение подачи полимера во второй дом-повтор
Я пытаюсь использовать dom-repeat внутри dom-repeat над массивом json внутри массива json. Как передать значение из первого массива второму dom-repeat?
Для иллюстрации у меня есть следующий массив json, который прекрасно загружается:
"books": [
{
"title": "book1",
"slug": "b1",
"authors": ["author1","author2"],
"blurb": "Some text"
},
{
"title": "book2",
"slug": "b2",
"authors": ["author2","author3"],
"blurb": "some more text"
}]
Я перебираю массив 'books' и получаю заголовок и объявление. Затем внизу я хочу, чтобы в списке были указаны оба автора каждой книги, а также ссылка на каждого из них в формате / slug / author (fi /b1/author1). Но поскольку во втором дом-повторе я переопределяю "элементы", "слаг" больше не доступен. Как мне это сделать?
<template>
<iron-ajax
auto
url="somelist.json"
handle-as="json"
last-response="{{someList}}"></iron-ajax>
<template is="dom-repeat" items="{{someList.books}}">
<paper-collapse-group>
<paper-collapse-item header$="{{item.title}}">
<p>{{item.blurb}}</p>
</paper-collapse-item>
<template is="dom-repeat" items="{{item.authors}}">
<a href$="/[[slug]]/[[item]]">{{item}}</a></div>
</template>
</paper-collapse-group>
</template>
</template>
Я также очень новичок в Polymer, так что спасибо за помощь в обучении!
2 ответа
Использовать as
атрибут, чтобы использовать пользовательское имя для item
имущество.
Пример:
<template>
<iron-ajax
auto
url="somelist.json"
handle-as="json"
last-response="{{someList}}"></iron-ajax>
<template is="dom-repeat" items="{{someList.books}}" as="book">
<paper-collapse-group>
<paper-collapse-item header$="{{book.title}}">
<p>{{book.blurb}}</p>
</paper-collapse-item>
<template is="dom-repeat" items="{{book.authors}}" as="author">
<a href$="/[[book.slug]]/[[author]]">{{author}}</a></div>
</template>
</paper-collapse-group>
</template>
</template>
Итак, что вы можете сделать, это создать еще один элемент, скажем, что будет выглядеть так:
<dom-module id="authors">
<template>
<template is="dom-repeat" items="[[authors]]">
<a href$="/[[slug]]/[[item]]">[[item]]</a>
</template>
</template>
<script>
Polymer({
is: 'authors',
properties: {
authors: Array,
slug: String
},
});
</script>
</dom-module>
а затем вставьте его в свой код, например:
<template is="dom-repeat" items="[[someList.books]]">
<paper-collapse-group>
<paper-collapse-item header$="[[item.title]]">
<p>[[item.blurb]]</p>
</paper-collapse-item>
<authors slug="[[item.slug]]" authors="[[item.authors]]"></authors>
</paper-collapse-group>
</template>