【问题标题】:How to pass an Array as element's Attribute?如何将数组作为元素的属性传递?
【发布时间】:2017-07-08 08:57:52
【问题描述】:

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

文件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>

因此,对于使用元素并传递无效的 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>

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

谢谢

【问题讨论】:

    标签: javascript polymer polymer-1.0 custom-element


    【解决方案1】:

    根据polymer documentation,如果您遵守严格的 JSON 表示法,您可以将数组作为元素属性传递。

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

    &lt;my-element book='{ "title": "Persuasion", "author": "Austen" }'&gt;&lt;/my-element&gt;

    请注意,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>
    

    还要注意inputAndLabel 属性的corresponding attribute 写成input-and-label

    【讨论】:

    • Supersharp,出于某种原因,我首先分配 '[ {"defaultValue": "", "type":"text", "tag": "Nombre" }, {"defaultValue": " ", "type":"text", "tag": "Apellido" }, {"defaultValue": "", "type":"text", "tag": "Email" }, {"defaultValue": " ", "type":"text", "tag": "Dirección" }]' 到变量 str,然后使用 ,它不起作用。是否需要将 '[{...},...,{...}]' 内联?
    • @hjyanghj 是的。您不能在 html 代码中设置变量。作为一种解决方法,您可以使用 setAttribute() 在 Javascript 中分配它
    猜你喜欢
    • 2022-07-28
    • 1970-01-01
    • 2012-12-20
    • 2016-11-13
    • 2012-05-24
    • 2016-11-18
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    相关资源
    最近更新 更多