В моем компоненте есть этот код, который по сути совпадает с примером в svelte docs:
export default {
methods: {
assessmentMouseover(e) {
const event = new CustomEvent('assessment-mouseover', {
detail: 'something',
bubbles: true,
cancelable: true,
composed: true, // makes the event jump shadow DOM boundary
})
this.dispatchEvent(event)
},
},
...
}
Затем у меня есть этот код в теге script на HTML-странице, который создает этот компонент, который также по сути такой же, как и svelte docs:
const el = document.querySelector('#radar')
el.addEventListener('assessment-mouseover', event => {
console.log('got here')
})
Однако, когда я инициирую событие, я получаю эту ошибку: this.dispatchEvent is not a function
.
Я пробовал несколько вариантов this.dispatchEvent()
, например, просто dispatchEvent()
, который не вызывает ошибок, но также не запускает слушателя; и window.dispatchEvent()
, который также не запускается.
Что я делаю неправильно?
this.fire
. (Этот интерфейс будет унифицирован в v3.) - person Rich Harris   schedule 28.11.2018document
. - person Larry Maccherone   schedule 30.11.2018CustomEvent
состоит в том, что вы можете отправить его из определенного элемента, а заинтересованные стороны могут прослушивать событие в этом элементе (или его родителях, если оно всплывает). Если есть ошибка, то она в самом Svelte, а не в документации, но мы не можем знать, есть она или нет, без репро. - person Rich Harris   schedule 30.11.2018