dom-repeater中的双向数据绑定

时间:2015-06-09 17:21:59

标签: polymer polymer-1.0

我正在尝试在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转发器中的输入不会传播,使用路径在其外部的输入传播到转发器但不是相反,但它不会更新{{}}

2 个答案:

答案 0 :(得分:2)

我问了一个类似的问题(How to two-way bind iron-input to dom-repeat's item?),我得到的答案是使用value="{{item::input}}。但是,似乎绑定到原始字符串数组并不是很好。我尝试将其更改为具有单个字符串属性的对象数组,并且完成了它。

http://plnkr.co/edit/X6b3FqZIY29tiGYoHnzq

答案 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.*')
 }
},