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

Директива wire:loading.target

Директива wire:loading.target используется совместно с wire:loading и позволяет указать конкретный элемент или действие компонента, во время выполнения которого должно показываться состояние загрузки. В значение передаётся имя свойства или метода, либо селектор элемента. Если не использовать wire:loading.target, то состояние загрузки будет показываться при любом действии компонента.

Синтаксис

<div wire:loading.target="methodName"> Loading... </div>

Пример

Давайте покажем индикатор загрузки только во время выполнения метода loadData, а не при любых других действиях:

<?php namespace AppLivewire; use LivewireComponent; class DataLoader extends Component { public $data = null; public $isLoaded = false; public function loadData() { sleep(2); $this->data = ['a', 'b', 'c', 'd', 'e']; $this->isLoaded = true; } public function resetData() { $this->data = null; $this->isLoaded = false; } public function render() { return view('livewire.data-loader'); } } ?>
<div> <button wire:click="loadData"> Load Data </button> <button wire:click="resetData"> Reset </button> <div wire:loading.target="loadData"> Loading data... </div> @if ($data) <div> Data: {{ implode(', ', $data) }} </div> @endif </div>

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

<button> Load Data </button> <button> Reset </button> <div> Loading data... </div> <div> Data: a, b, c, d, e </div>

Пример

Можно указать несколько целей через запятую. Покажем индикатор загрузки при выполнении методов loadData или processData:

<?php namespace AppLivewire; use LivewireComponent; class DataProcessor extends Component { public $status = 'ready'; public function loadData() { sleep(2); $this->status = 'loaded'; } public function processData() { sleep(3); $this->status = 'processed'; } public function resetStatus() { $this->status = 'ready'; } public function render() { return view('livewire.data-processor'); } } ?>
<div> <button wire:click="loadData"> Load </button> <button wire:click="processData"> Process </button> <button wire:click="resetStatus"> Reset </button> <div wire:loading.target="loadData, processData"> Processing... </div> <div>Status: {{ $status }}</div> </div>

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

<button> Load </button> <button> Process </button> <button> Reset </button> <div> Processing... </div> <div> Status: processed </div>

Пример

Также можно использовать селекторы элементов в качестве цели. Покажем загрузку при клике на конкретную кнопку:

<?php namespace AppLivewire; use LivewireComponent; class ButtonLoader extends Component { public $message = 'Waiting...'; public function loadFromButton() { sleep(2); $this->message = 'Loaded!'; } public function loadFromOther() { sleep(2); $this->message = 'Other action!'; } public function render() { return view('livewire.button-loader'); } } ?>
<div> <button wire:click="loadFromButton" id="main-btn"> Main Button </button> <button wire:click="loadFromOther"> Other Button </button> <div wire:loading.target="#main-btn"> Loading from main button... </div> <div>{{ $message }}</div> </div>

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

<button id="main-btn"> Main Button </button> <button> Other Button </button> <div> Loading from main button... </div> <div> Loaded! </div>

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

  • директиву wire:loading,
    которая управляет отображением элементов в состоянии загрузки
  • директиву wire:loading.delay,
    которая добавляет задержку перед показом состояния загрузки
  • директиву wire:loading.class,
    которая добавляет CSS-класс во время загрузки
  • директиву wire:target,
    которая ограничивает область действия других директив
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить