我正在尝试在dom-repeater和模板中的输入之间创建双向数据绑定,但更改似乎没有传播回来。我做错了什么?
<dom-module id="record-card">
<template id="node">
<template is="dom-repeat" items="{{labels}}">
<h1>
<input is="iron-input" bind-value="{{item}}" on-change="labelsChanged">
</h1>
</template>
<input is="iron-input" bind-value="{{labels.0}}">
Labels: <span>{{labels}}</span>
</template>
</dom-module>
<script>
Polymer({
is: "record-card",
properties: {
labels: {
type: Array,
notify: true,
value: function() {
return ["Pizza", "Person"]
}
}
}
});
</script>
dom转发器中的输入不会传播,使用路径在其外部的输入传播到转发器但不是相反,但它不会更新{{}}
。
答案 0 :(得分:2)
我问了一个类似的问题(How to two-way bind iron-input to dom-repeat's item?),我得到的答案是使用value="{{item::input}}
。但是,似乎绑定到原始字符串数组并不是很好。我尝试将其更改为具有单个字符串属性的对象数组,并且完成了它。
答案 1 :(得分:0)
以下是我如何处理嵌套dom-repeat
中更改的数据http://plnkr.co/edit/Y0P5vNxg46t5fX7gJFxU?p=preview
// Add Task to the selected Employee
_addTask: function() {
var i=this._getSelectedEmployeeIndex()
if (i>=0) {
var employee = this.employees[i]
// use both for child dom-repeat
this.push('employees.'+i+'.tasks', {name: this._random(this.__tasks)})
this.notifyPath('employees.'+i+'.tasks.*')
}
},