Polymer 聚合物1.1绑定到数组值

Polymer 聚合物1.1绑定到数组值,polymer,polymer-1.0,Polymer,Polymer 1.0,我有一张这样的表格 <div class="warranty-part"> <paper-input maxlength="4" name="warranty[0]" no-label-float label="1111" value="{{warranty0::input}}"></paper-input> </div> <div class="warranty-part">

我有一张这样的表格

       <div class="warranty-part">
        <paper-input maxlength="4" name="warranty[0]" no-label-float label="1111" value="{{warranty0::input}}"></paper-input>
      </div>
      <div class="warranty-part">
        <paper-input maxlength="4" name="warranty[1]" no-label-float label="1111" value="{{warranty1::input}}"></paper-input>
      </div>
      <div class="warranty-part">
        <paper-input maxlength="4" name="warranty[2]" no-label-float label="1111" value="{{warranty2::input}}"></paper-input>
      </div>
      <div class="warranty-part">
        <paper-input maxlength="4" name="warranty[3]" no-label-float label="1111" value="{{warranty3::input}}"></paper-input>
      </div>
这很有效。。。但更整洁的是能够绑定到每个字段的数组值来整理内容

但我就是不知道如何用聚合物绑定到数组的索引。从阅读文档中,我得到了这样的印象:绑定到输入值将起作用

    value="{{warranty.0::input}}"
但事实并非如此


有什么办法吗?

试试
{{{warranty.0}
{{warranty.1}}
等等

但是,如果您更新了任何
纸张输入
,则不会调用
onWarrantyChange
观察者,因为您将需要一种特殊的
*
语法来在数组内发出属性更改通知(请参阅)

见此参考


更新 看起来聚合可能会被值类型字符串文本的绑定所混淆。因此,一个简单的解决方法是定义一个包含4个对象的数组,如下所示-

value: [ { value: '' }, { value: '' }, { value: '' }, { value: '' } ]
绑定将成为-

value=“{{warranty.0.value}}”
value=“{{warranty.1.value}}”


看看这个新的

非常感谢你的回答!!这是一个很好的方法。我发现的唯一一件事是,当您将数组值作为空字符串启动时,所有值都绑定到最后一个数组值。。例如,因为这些字符串文本彼此相等,这会混淆Polymer,它总是选择最后一个要更新的字符串(请参见Polymer.html中的这一行
var key=coll.getKey(old);
)。因此,可以将
值更改为
[new String(),new String(),new String(),new String()]
。但是,这样做会使
纸张输入
丢失默认的
标签
显示。在您的特定情况下,由于您有
无标签浮动
,快速解决方案可能是简单地使用
占位符
,而不是
标签
,因为它们具有确切的外观和感觉。请参阅。实际上,更好的方法可能是使用4个对象定义数组,以便它们是引用类型的。请参阅我的最新答案。
    value="{{warranty.0::input}}"
properties: {
  warranty: {
    type: Array,
    value: ['111','222','333','444']
  }
},

observers: ['onWarrantyChange(warranty.*)'],

onWarrantyChange: function (changedWarranty) {
  console.log(changedWarranty);
}
value: [ { value: '' }, { value: '' }, { value: '' }, { value: '' } ]