聚合物纸张输入不会更新嵌套属性

时间:2017-08-31 09:58:28

标签: polymer polymer-2.x

纸张输入是否支持嵌套属性?例如,

<paper-input label="FIRST NAME" value="{{client.name}}"></paper-input> //client object is updated
<paper-input label="LAST NAME" value="{{client.address.street}}"></paper-input> //client object is not updated
当用户将文本输入纸张输入时,

client.name会更新,但当用户将文本输入纸张输入时,client.address.street不会更新。即客户对象仅包含{name: 'xxx}而不包含{name: 'xxx', address: {street: 'abc'}}

是否有任何文件提到上述限制或我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:0)

Polymer没有提供直接绑定到数组项的方法。您必须使用来自polymer的数据绑定辅助元素(如template repeaters)来嵌套范围。

使用以下方法之一与数据绑定中的数组进行交互:

  • dom-repeat辅助元素允许您为数组中的每个项创建模板实例。在dom-repeat实例中,您可以绑定到数组项的属性。

    <dom-repeat items="{{client}}" as="client">
      <template>
        <paper-input label="FIRST NAME" value="{{client.name}}"></paper-input>
        <paper-input label="LAST NAME" value="{{client.address.street}}"></paper-input>
      </template>
    </dom-repeat>
    
  • iron-list显示虚拟的“无限”列表。 iron-list元素中的模板表示为每个列表项创建的DOM。

    <iron-list items="{{client}}" as="client">
      <template>
          <paper-input label="FIRST NAME" value="{{client.name}}"></paper-input>    
          <paper-input label="LAST NAME" value="{{client.address.street}}"></paper-input>
      </template>
    </iron-list>
    

如果使用函数初始化属性(即对象或数组值),它将确保每个元素都获得自己的值副本,而不是在元素的所有实例之间共享对象或数组。您没有上面的用户帮助元素:

client: {
    type: Object,
    value: function() {
           return {
            "name": "",
            "address": {
              "street": ""
           }
          };
        }
}

Demo