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);
});
});
}
しかし、それは機能しません (おそらく、コンテンツが既に配布されているためです)。
ここでフィドル
一般に、私が達成したいのはhttp://jsbin.com/hegizi/3/editのようなものですが、クラス名をハードコーディングせずに、可変数の子ノードで機能させます。
さらに、それは:nth-child
ネイティブでサポートされていないようです: https://github.com/Polymer/polymer/issues/470