Polymer 从<;内容>;
我有一个Polymer 从<;内容>;,polymer,Polymer,我有一个表单el,它只是一个容器,必须用特定的类将所有孩子包装在div中。我不想在每个表单元素中重复这个div,而是允许el中的来包装它们。 我可以循环所有元素并将它们包装到其他html标记中吗 // Markup <form-el> <input-el label="name" type="text" /> <span>This must also be wrapped</span> </form-el> // Wo
表单el
,它只是一个容器,必须用特定的类将所有孩子包装在div
中。我不想在每个表单元素中重复这个div
,而是允许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'
//标记
这也必须包装好
//会产生
名称
这也必须包装好
//其中“”由“from el”生成
实现这一点的一种方法是通过模板重复为light dom定制的节点,如下所示:
<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>
聚合物({
domReady:function(){
this.updateWrappers();
},
updateWrappers:function(){
this.wrappers=[];
for(变量i=0,n=this.firstChild;n;n=n.nextSibling){
if(n.setAttribute){
//将可选键附加到每个灯光dom节点
n、 setAttribute('key',i);
//使用该键指定一个
this.wrappers.push(i++);
}
}
}
});
非常感谢。但当我尝试包裹聚合物元素时,它只显示第一个。任何自定义元素都不能为空,请注意,您不能使用
您必须使用
@ScottMiles如何/何时才能获得包装器?由于模板是以异步方式标记和分发的,因此我无法在this.updateWrappers()之后立即获取对this.shadowRoot.querySelectorAll(“div”)
的引用代码>设置超时是否足够简单?在简化的情况下,它是有效的,但它是否足以避免任何竞争条件?