【发布时间】:2019-07-22 06:13:07
【问题描述】:
我有一个自定义元素提供 API 方法 sayHello。如果元素从 DOM 中删除,我需要“销毁”对 disconnectedCallback 中自定义元素的所有引用。我怎样才能做到这一点?
class RemoveEl extends HTMLButtonElement {
constructor() {
super();
this.type= 'button';
this.addEventListener('click', () => {
this.parentElement.removeChild(this);
})
}
sayHello() {
console.log('hello');
}
disconnectedCallback() {
if (!document.body.contains(this)) {
console.log('removed');
// here I need something like
// this = null;
}
}
}
customElements.define('remove-el', RemoveEl, { extends: 'button' });
var sayHello = document.getElementById('sayHello');
var removeEl = document.getElementById('removeEl');
sayHello.addEventListener('click', () => {
if (removeEl) {
removeEl.sayHello();
}
})
<div>Test:
<button is="remove-el" id="removeEl">Click to remove</button>
<button id="sayHello" type="button">Say Hello</button>
</div>
【问题讨论】:
标签: javascript ecmascript-6 custom-element