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: '' } ]