attributeChangedCallback不触发

Bjö*_*rth 3 javascript custom-element

问题如下,当我在devtool或js代码中更新attr sticky时,无法触发attributeChangedCallback。滚动和添加和删除粘性属性时,_updateSticky()方法运行得很好。

class HeaderLogo extends HTMLElement {

static get observedAttribute() {
    return ['alt-logo', 'sticky'];
}

constructor() {
    super();    
}

connectedCallback() {
   this._updateSticky();

    window.addEventListener('scroll', () => {
        this._updateSticky();
    }, false);
}  

attributeChangedCallback(attrName, oldVal, newVal) {    
    console.log("attr changed");    
}

/* evaluates if the logo should be in sticky state or not */
_updateSticky() {
    let scrollTop = window.pageYOffset || (document.documentElement || document.body.parentNode || document.body).scrollTop;
    let breakpoint = 50;

    if (scrollTop > breakpoint) {
        this.setAttribute('sticky', '');
    } else {
        this.removeAttribute('sticky');
    }
 }
}

window.customElements.define('header-logo', HeaderLogo);
Run Code Online (Sandbox Code Playgroud)

Xi *_*gma 6

它只是你有错字observedAttribute应该是observedAttributes