【发布时间】:2014-04-10 13:49:47
【问题描述】:
有没有办法以编程方式将内容从 lightDOM 分发(插入)到 ShadowDOM?
我想将每个子节点包装成一个元素。 例如:
<my-list>
<span>first element</span>
<div>second element</div>
<a>third element</a>
</my-link>
分发为
<my-list>
<ul>
<li>
<span>first element</span>
</li>
<li>
<div>second element</div>
</li>
<li>
<a>third element</a>
</li>
</ul>
</my-link>
我不仅需要它以这种方式呈现,还需要委托整个 HTML 行为(绑定、事件等),因为每个分布式节点都可能包含整个应用程序。
我已尝试将 <content select=":nth-child(..)"> 元素附加到 attached 回调上的模板
attached: function(){
//ensure any element upgrades have been processed
this.async(function asyncAttached(){
var list = this.$.container;
this.children.array().forEach(function(child, childNo){
var li = document.createElement("LI");
console.log(list, li, child);
li.innerHTML = '<content select=":nth-child('+childNo+')"></content>';
list.appendChild(li);
});
});
}
但它不起作用(可能是因为内容已经分发)。
小提琴here
一般来说,我想要实现类似于http://jsbin.com/hegizi/3/edit,但没有硬编码类名,并使其适用于可变数量的子节点。
此外,似乎原生不支持:nth-child:https://github.com/Polymer/polymer/issues/470
【问题讨论】:
标签: javascript polymer web-component shadow-dom