从<content> </content>装饰元素

时间:2014-08-29 08:08:45

标签: polymer

我有一个form-el只是一个容器,必须将div内的所有子项包装在特定的类中。我希望允许div包装它们,而不是在每个表单元素中重复此from-el。 我可以遍历所有元素并将它们包装在其他html标记中吗?

// Markup
<form-el>
    <input-el label="name" type="text" />
    <span>This must also be wrapped</span>
</form-el>

// Would produce
<form>
    <div class="form-field">
       <label>name</label>
       <input type="text" name="name" />
    </div>
    <div class="form-field">
       <span>This must also be wrapped</span>
    </div>
</form>
// Where '<div class="form-field">' is produced by 'from-el'

1 个答案:

答案 0 :(得分:5)

实现这一目标的一种方法是通过模板重复为您的灯光量身定制的<content>节点,如下所示:

<polymer-element name="form-el">
<template>

  <template repeat="{{wrappers}}">
    <div style="border: 2px solid orange; padding: 2px; margin: 4px">
      <content select="[key='{{}}']">
    </div>
  </template>

</template>
<script>

  Polymer({
    domReady: function() {
      this.updateWrappers();
    },
    updateWrappers: function() {
      this.wrappers = [];
      for (var i=0, n=this.firstChild; n; n=n.nextSibling) {
        if (n.setAttribute) {
          // attach a selectable key to each light-dom node
          n.setAttribute('key', i);
          // specify a <content> with that key
          this.wrappers.push(i++);
        }
      }
    }
  });

</script>
</polymer-element>

http://jsbin.com/mukip/5/edit