如何将数组作为元素的属性传递?

Eda*_*lez 5 javascript polymer custom-element polymer-1.0

我正在开发发送数组作为元素的属性。

档案form-list.html

<dom-module id="form-list">
  <template>
    <div>{{title}} - {{owner}} </div>
    <form>
      <template is="dom-repeat" items="{{inputAndLabel}}">
          <div><label>{{item.tag}} {{owner}}</label><input type="{{item.type}}" value="{{item.defaultValue}}"></div>
      </template>
    </form>
  </template>

  <script>
    Polymer({
      is: 'form-list',
      properties: {
        owner: {
          value:"Mechanical",
        },
        inputAndLabel: {
          type: Array,
          value: function() { return []; }
        }
      },
      ready: function() {
        this.title = 'Formulario: Usuario';
      }
    });
  </script>
</dom-module>
Run Code Online (Sandbox Code Playgroud)

因此,对于使用元素并传递inputAndLabel属性(这是一个数组),这是行不通的,但是owner属性起作用(这是一个字符串)。

<form-list inputAndLabel="[
        {defaultValue: '', type:'text', tag: 'Nombre' },
        {defaultValue: '', type:'text', tag: 'Apellido' },
        {defaultValue: '', type:'text', tag: 'Email' },
        {defaultValue: '', type:'text', tag: 'Dirección' }]" owner="Eternal">
</form-list>
Run Code Online (Sandbox Code Playgroud)

如何发送数组作为自定义元素的属性?

谢谢

Sup*_*arp 5

根据Polymer文档,您可以遵循严格的JSON表示法将数组作为元素属性传递。

对于对象和数组属性,可以传递JSON格式的对象或数组:

<my-element book='{ "title": "Persuasion", "author": "Austen" }'></my-element>

请注意,JSON需要双引号,如上所示。

<form-list input-and-label='[
        {"defaultValue": "", "type":"text", "tag": "Nombre" },
        {"defaultValue": "", "type":"text", "tag": "Apellido" },
        {"defaultValue": "", "type":"text", "tag": "Email" },
        {"defaultValue": "", "type":"text", "tag": "Dirección" }]'   owner="Eternal">
</form-list>
Run Code Online (Sandbox Code Playgroud)

另请注意,已写入该属性的相应属性inputAndLabelinput-and-label

  • @hjyanghj是的。您无法在html代码中设置变量。解决方法是,可以使用setAttribute()在Javascript中分配它 (2认同)