问题:
在Web组件规范中,当您想从模板中读取Light-DOM
中的元素时,可以使用<content select></content>
元素。但是,如何从组件的javascript代码中检索这些信息呢?
示例:
<wc-timer>
<wc-timer-title>I want to read this from JS</wc-timer-title>
</wc-timer>
谢谢你,哈维尔。
请记住,原型方法内部的this
指的是元素本身。IOW,就像你可以做element.innerHTML
或element.firstChild
一样,你可以写this.innerHTML
或this.firstChild
。
简单模式:
domReady: function() {
console.log(this.textContent);
}
http://jsbin.com/bociz/2/edit
如果使用<content>
通过多个级别的Shadow DOM来投影节点,则会变得更加复杂。在这种情况下,您将需要使用<content>
节点本身的getDistributedNodes
api。
在开始之前,我建议你从简单的版本开始,如果你遇到麻烦,可以问一个后续问题。
使用this
,用于访问lightDOM和使用this.shadowRoot
访问shadowDOM
我不知道模板对dom的渲染结果,但也许你可以试试这个:
//jQuery
$('wc-timer-title').text();
//Plain
document.getElementsByTagName("wc-timer-title")[0].innerHTML;
您应该能够使用/deep/
,它已被弃用,但还没有具体日期。