РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
3 of 274 menu

Директива wire:click.stop

Директива wire:click.stop вешается на HTML-элемент и работает аналогично wire:click, но с дополнительным модификатором stop, который предотвращает всплытие события клика. В значение передаётся имя публичного метода компонента. После вызова Livewire обновляет шаблон компонента.

Синтаксис

<button wire:click.stop="methodName"> text </button>

Пример

Пусть у нас есть вложенные элементы: див с методом outerClick и кнопка с методом innerClick. Без модификатора stop при клике на кнопку сработают оба метода:

<?php namespace AppLivewire; use LivewireComponent; class ClickDemo extends Component { public $outerLog = []; public $innerLog = []; public function outerClick() { $this->outerLog[] = 'outer clicked'; } public function innerClick() { $this->innerLog[] = 'inner clicked'; } public function render() { return view('livewire.click-demo'); } } ?>
<div wire:click="outerClick" style="padding: 20px; background: #f0f0f0;"> <button wire:click="innerClick"> click me </button> <p>outer: {{ json_encode($outerLog) }}</p> <p>inner: {{ json_encode($innerLog) }}</p> </div>

Результат выполнения кода после клика на кнопку:

<div style="padding: 20px; background: #f0f0f0;"> <button> click me </button> <p>outer: ["outer clicked"]</p> <p>inner: ["inner clicked"]</p> </div>

Пример

Теперь добавим модификатор stop на кнопку, чтобы предотвратить вызов внешнего обработчика:

<?php namespace AppLivewire; use LivewireComponent; class ClickDemo extends Component { public $outerLog = []; public $innerLog = []; public function outerClick() { $this->outerLog[] = 'outer clicked'; } public function innerClick() { $this->innerLog[] = 'inner clicked'; } public function render() { return view('livewire.click-demo'); } } ?>
<div wire:click="outerClick" style="padding: 20px; background: #f0f0f0;"> <button wire:click.stop="innerClick"> click me </button> <p>outer: {{ json_encode($outerLog) }}</p> <p>inner: {{ json_encode($innerLog) }}</p> </div>

Результат выполнения кода после клика на кнопку:

<div style="padding: 20px; background: #f0f0f0;"> <button> click me </button> <p>outer: []</p> <p>inner: ["inner clicked"]</p> </div>

Как видно, метод внешнего дива не был вызван благодаря модификатору stop.

Смотрите также

  • директиву wire:click,
    которая вызывает метод при клике на элемент
  • директиву wire:click.prevent,
    которая отменяет действие браузера по умолчанию
  • директиву wire:click.self,
    которая обрабатывает клик только по самому элементу
  • директиву wire:click.once,
    которая вызывает метод только один раз
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить