Home > Enterprise >  Does Laravel Livewire dispatch js events when change some property?
Does Laravel Livewire dispatch js events when change some property?

Time:02-20

i have a question about laravel livewire, when i change some property of my component, the front input binded to that property emits some event?

public function edit(Post $post)
{
    $this->post = $post;
    $this->start_date = $post->start_date;
}

i was thinking livewire dispatch the same event used to listen the front:

<input wire:model="start_date" type="date" id="dateId" />

<script wire:ignore>
    document.addEventListener('livewire:load', function () {

        $("#dateId").on('input', (event) => {
             console.log(345);
        });

    });
</script>

but nothing

CodePudding user response:

Not immediately when you change a property inside PHP Livewire component the way you showed.

You would need to emit a browser event from Livewire Component and listen for it in the frontend as described in docs.

You can also try Global Livewire JavaScript Object: Livewire.on(eventName, (...params) => {})

But the easiest way to interact with Livewire is probably with Alpine.js.

CodePudding user response:

According to the documentation for livewire 2.x, what you're looking could be one of these hooks. Maybe component.initialized, element.updating, element.updated or one of the messages.

Hooks Description
component.initialized Called when a component has been initialized on the page by Livewire
element.initialized Called when Livewire initializes an individual element
element.updating Called before Livewire updates an element during its DOM-diffing cycle after a network roundtrip
element.updated Called after Livewire updates an element during its DOM-diffing cycle after a network roundtrip
element.removed Called after Livewire removes an element during its DOM-diffing cycle
message.sent Called when a Livewire update triggers a message sent to the server via AJAX
message.failed Called if the message send fails for some reason
message.received Called when a message has finished its roudtrip, but before Livewire updates the DOM
message.processed Called after Livewire processes all side effects (including DOM-diffing) from a message
<script>
    document.addEventListener("DOMContentLoaded", () => {
        Livewire.hook('component.initialized', (component) => {})
        Livewire.hook('element.initialized', (el, component) => {})
        Livewire.hook('element.updating', (fromEl, toEl, component) => {})
        Livewire.hook('element.updated', (el, component) => {})
        Livewire.hook('element.removed', (el, component) => {})
        Livewire.hook('message.sent', (message, component) => {})
        Livewire.hook('message.failed', (message, component) => {})
        Livewire.hook('message.received', (message, component) => {})
        Livewire.hook('message.processed', (message, component) => {})
    });
</script>
  • Related