我正在使用自定义元素,这非常好。
但是我面临一个问题:
调用connectedCallback()函数时,似乎该节点尚未在DOM中位于其位置,因此我无法访问其父节点,因此需要它们。
class myElement extends HTMLElement{
constructor() {
super();
this.tracklist = undefined;
}
connectedCallback(){
this.render();
}
render(){
this.tracklist = this.closest('section');
// following code requires this.tracklist!
// ...
}
window.customElements.define('my-element', myElement);
在调用render()之前,如何确定父节点是可访问的?
谢谢 !
最佳答案
这是一个已知问题:connectedCallback
并不表示您的元素已被解析或未完全解析。
自定义元素缺少parsedCallback
方法
在以下位置查看所有答案:
textContent empty in connectedCallback() of a custom HTMLElement
自定义html元素的已连接回调
How to have a 'connectedCallback' for when all child custom elements have been connected
TL; DR;
也许一个快速(又肮脏的?)修复方法是延迟您的渲染方法:
connectedCallback(){
setTimeout(this.render);
}