calling alpine variable from livewire dispatch event

 <div x-data="{ mypreloader2: false }" x-on:hide-preloader.window="mypreloader2 = false">
 </div>
 
 
 
 
 @script
    <script data-navigate-once>
       
        $wire.on('hide-preloader', (getdata) => {

            window.dispatchEvent(new CustomEvent('hide-preloader'))
        }, {
            once: true
        });
    </script>
    @endscript

Here is the full explanation in simple terms so you understand exactly what each part does.


โœ… 1. Alpine Component

<div x-data="{ mypreloader2: false }" x-on:hide-preloader.window="mypreloader2 = false"> </div>

๐Ÿ” What this means:

x-data="{ mypreloader2: false }"

  • This creates an Alpine component.
  • It has one variable:
  • mypreloader2 = false
  • This variable controls whether the preloader is shown or hidden.

x-on:hide-preloader.window="mypreloader2 = false"

  • This tells Alpine:

“When a browser event named hide-preloader is fired, set mypreloader2 = false.”

Why .window?

  • It listens at the window level.
  • This allows events dispatched from outside Alpine (like from Livewire) to be caught.

So when the browser receives:

window.dispatchEvent(new CustomEvent('hide-preloader'))

โ†’ Alpine will run:

mypreloader2 = false

โ†’ preloader hides.


โœ… 2. Script Section

@script <script data-navigate-once> $wire.on('hide-preloader', (getdata) => { window.dispatchEvent(new CustomEvent('hide-preloader')) }, { once: true }); </script> @endscript

๐Ÿ” What this means:

$wire.on('hide-preloader', ...)

  • This listens for Livewire event from your backend.
  • Example:

$this->dispatch('hide-preloader');

When Livewire receives that, it triggers this JavaScript function.


window.dispatchEvent(new CustomEvent('hide-preloader'))

  • This sends a browser event called hide-preloader.
  • Alpine is already listening for this event (from step 1).

So it becomes:

  1. Laravel (backend) dispatches โ†’ Livewire event
  2. Livewire event triggers โ†’ JavaScript
  3. JavaScript broadcasts โ†’ browser event
  4. Alpine receives โ†’ mypreloader2 = false
  5. Preloader hides

๐Ÿง  Summary (Easy Version)

Backend โ†’ Frontend โ†’ Alpine

StepWho sends?Who receives?What happens?
1LaravelLivewire JSdispatch('hide-preloader')
2Livewire JSBrowserwindow.dispatchEvent(new CustomEvent(...))
3BrowserAlpinex-on:hide-preloader.window="mypreloader2 = false"
4AlpineUIPreloader hidden

Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *