Первое: поскольку у lit-элемента не было концепции сопоставления имени свойства с именем атрибута путем преобразования casel-case в dash-case, как в Polymer 2. Поэтому, если вы объявляете xhrSelector
, вы должны использовать:
<ostinato-fetch-triggers xhrSelector="#somethingElse"></ostinato-fetch-triggers>
Секунда: connectedCallback
является собственным обратным вызовом жизненного цикла , а не lit-element
, что означает, что нет никакой гарантии, что при вызове lit-element
уже установленосвойства.Вы можете использовать firstUpdated(changedProperties)
или update(changedProperties)
, если хотите реагировать каждый раз при изменении свойства.
Подробнее о lit-element жизненный цикл .
Третье: в disconnectedCallback
кажется, что вы хотите удалить слушателя, но это не сработает, потому что каждый раз, когда вы выполняете функцию bind
, она возвращает новую функцию, что означает, что вы пытаетесь удалить функцию, которая никогда не была добавлена ранее.
Вы должны держать слушателя в некоторой переменной
let listener = this._handleXhrClick.bind(this)
trigger.addEventListener('click', listener)
this.listeners.push({ trigger, listener })
, затем в disconnectedCallback
this.listeners.forEach(({ trigger, listener }) => {
listener.removeEventListener('click', listener)
})