<div x-data @notify="alert('Привет, мир!')"> <button @click="$dispatch('notify')">Уведомить</button></div>$dispatch
$dispatch — полезное сокращение для диспетчеризации событий браузера.
При желании вместе с отправляемым событием можно передать и данные. Эти данные будут доступны как свойство .detail события:
<div x-data @notify="alert($event.detail.message)"> <button @click="$dispatch('notify', { message: 'Привет, мир!' })"> Уведомить </button></div>Под капотом $dispatch представляет собой обёртку для более подробного API: element.dispatchEvent(new CustomEvent(...)).
Вы также можете воспользоваться предыдущим методом, чтобы заставить ваши компоненты взаимодействовать друг с другом:
Пример:
<div x-data="{ title: 'Привет' }" @set-title.window="title = $event.detail"> <h1 x-text="title"></h1></div>
<div x-data> <button @click="$dispatch('set-title', 'Привет, мир!')">Нажми меня</button></div><!-- При нажатии содержимое h1 получит текст «Привет, мир!». -->Вы также можете использовать $dispatch() для запуска обновления данных для привязок x-model. Например:
<div x-data="{ title: 'Привет' }"> <span x-model="title"> <button @click="$dispatch('input', 'Привет, мир!')">Нажми меня</button> <!-- После нажатия кнопки `x-model` перехватит всплывающее событие ввода и обновит заголовок. --> </span></div>Это открывает возможности для создания пользовательских компонентов ввода, значение которых можно установить с помощью x-model.
Правильный вариант использования событий в этом коде…