从<content>中装饰元素

ger*_*s.b 3 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'
Run Code Online (Sandbox Code Playgroud)

Sco*_*les 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>
Run Code Online (Sandbox Code Playgroud)

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