聚合物dom-repeat子属性将子节点更改为主机接线

时间:2016-03-22 15:38:38

标签: javascript data-binding polymer-1.0

我有一个对象到子元素的宿主元素绑定数组,它有一个paper-input来编辑它的属性。我没有看到主机div元素中反映的输入值发生了变化。即使在调试中,我也可以看到主机对象具有最新编辑的name。我该怎么办才能自动连线?

    <!-- Host element -->
<dom-module id="host-item">
    <template>
          <div>
             <div>[[selectedEmployee.name]]</div>
                <template is="dom-repeat" items="[[employees]]" as="employee">
                    <item-edit item="[[employee]]"></item-edit>
                </template>
          </div>
    </template>
    <script>
    Polymer({
                is: 'host-item',
                properties: {                
                    selectedEmployee: {
                        type: Object 
                    },
                    employees: {
                      type: Array,
                      value = [ { name: 'Name 1'}, { name: 'Name 2'}, { name: 'Name 2'}]
                    }
                },
                ready: function() {
                  this.selectedEmployee = this.employees[0];
                }
            }); 
    </script>
</dom-module>

<!-- Child element -->
<dom-module id="item-edit">
    <template>
          <paper-input id="input" value="{{item.name}}" error-message="Invalid name!"></paper-input>            
    </template>
    <script>
    Polymer({
                is: 'item-edit',
                properties: {                
                    item: {
                        type: Object
                    }
                }
            }); 
    </script>
</dom-module>

1 个答案:

答案 0 :(得分:0)

{{employee}}用于2 way binding[[...]]仅限于一种方式。 在属性定义上使用notify: true

子元素应该在父元素之前定义。

以下是工作示例Plunk和类似的Plunk

<item-edit item="{{employee}}"></item-edit>
...
employee: {
                type: Object,
                notify: true,
                value: function () { return {name: 'Test' }; }
            }

更新:

现在&#34;员工&#34;数据是对象数组的形式。 查看此问题以使用数组: Polymer, issue with binding array to paper slider value

Plunk

文档:Binding to array items