2017-08-31 114 views
0

纸张输入是否支持嵌套属性?例如,当用户将文本输入到纸张输入但client.address.street当用户将文本输入到纸张输入不被更新聚合物纸张输入不会更新嵌套属性

<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被更新。即客户端对象只包含{name: 'xxx}而不是{name: 'xxx', address: {street: 'abc'}}

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

回答

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

+0

感谢。但是,当用户将值输入到纸张输入时,{{client.address.street}}不会更新。我试图理解为什么发生。 – user3240644

+0

我没有机会尝试提供的附加演示。重击者并没有渲染......对于聚合物元素而言,jsbin看起来是一样的。多吉克问题? – user3240644

+0

谢谢。我终于得到了你所创造的榨汁机的测试。它确实有效。因此,如果我只有一组非重复输入,将它列入铁名单或重复单词中不是一个过分的问题? – user3240644