如何将对象推入数组-Polymer 2.x

时间:2019-03-21 13:38:15

标签: arrays push polymer-2.x

我正在尝试将项目推送到Polymer中的数组。 this.requestdom-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 :(得分:0)

您可以按照说明将对象推入数组。我不明白您是如何产生productData的,但我尝试说明以下示例:

Demo

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

您可以在演示链接上看到更多详细的代码。