Как поместить объекты в массив - Polymer 2.x - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь поместить элементы в массив в Polymer. this.request находится в шаблоне dom-repeat и правильно отображается в DOM. Однако, когда я регистрирую this.request, это показывает, что последняя запись переписала все предыдущие записи.

Например, если я нажимаю 1,2,3,4 как описание, dom-repeat будет точным, но когда я регистрирую this.request, он показывает 4,4,4,4.

<ul id="products">
  <template is="dom-repeat" items="[[request]]" restamp="true">
    <li>
      <p>[[item.description]]</p>
    </li>
  </template>
</ul>

...

request: {
  type: Object,  
  value: []
},

productData: {
  type:Object,
  value: {}  
}

...

addItemToList() {
  this.push('request', this.productData);
}

Попытка обойти с помощью this.set не приводит к обновлению DOM, а индексы массивов по-прежнему перезаписываются.

addItemToList() {
  let i = 'request.' + this.request.length;
  this.set(i, this.productData)
}

Кажется, проблема возникает из-за того, что объекты выдвигаются вместо строк, могут ли объекты передаваться как индексы массивов?

Какой метод можно использовать для синхронизации?

1 Ответ

0 голосов
/ 22 марта 2019

Вы можете поместить объект в массив, как вы описали. Я не мог понять, как вы производите productData, но я попытался проиллюстрировать следующие примеры:

Демо

addItemToList() {
  this.productData = {description:this.request.length}
  this.push('request', this.productData);
    console.log(this.request)  
}

Более подробный код вы можете увидеть по демонстрационной ссылке.

...