Events 실행시키는 방법

# Livewire Component
1class ShowPosts extends Component
2{
3 publuc $postCount;
4 
5 protected $listeners = ['postAdded'=> 'incrementPostCount'];
6 
7 public funciton incrementPostCount()
8 {
9 $this->postCount = Post::count();
10 }
11}
1$emit$listeners 로 연결해야 작동한다.
1$emit()
2$emitTo()
3$emitSelf()
# livewire Component
1$this->emit('postAdded');
# Blade Templete
1<button wire:click="$emit('postAdded')"></button>
# Javascript
1<script>
2 Livewire.emit('postAdded');
3 
4 Livewire.on('postAdded' postId => {
5 alert('A post was added with the id of:' + postId);
6 })
7</script>
# Alpine.js
1<button x-data="{}"
2x-on:click="window.livewire.emitTo('test.contact-modal', 'show')">Show contact modal</button>
3 
4<button x-data="{}"
5x-on:click="livewire.emitTo('test.contact-modal', 'show')">Show contact modal</button>
# livewire Component
1$this->dispatchBrowserEvent('name-updated', ['newName'=> $value]);
# livewire Component
1<script>
2 window.addEventListener('name-updated', event => {
3 alert('Name updated at:' + event.detail.newName);
4 })
5</script>
# Alpine.js 에서 이벤트 캡쳐하기 (name-update 이벤트가 발생하며 open = false 과 되는 것인가?)
1<div x-data="{open : false }" @name-updated.window="open : false">
2 <!-- Modal with a Livewire name update form -->
3</div>
1<livewire:test.eventtest message="메시지 입니다." />
2 
3livewire
4<x-button wire:click="statChanged('wire.click')" primary>wire:click="statChanged"</x-button>
5 
6$emit()
7<x-button primary wire:click="$emit('changed','$emit()')">wire:click="$emit('changed')"</x-button>
8 
9apline.js
10<x-button primary x-data @click="livewire.emit('changed','livewire.emit()')">@@click="livewire.emit('changed')"</x-button>
11 
12javascript
13<x-button primary onclick="livewire.emit('changed', 'javascript onclick')"> onclick="livewire.emit('changed')"</x-button>
Event Test

속성초기화

1 
2namespace App\Http\Livewire\Test;
3 
4use Livewire\Component;
5 
6class Eventtest extends Component
7{
8 public $message = '';
9 
10 public $stat = '';
11 
12 public $show = false;
13 
14 protected $listeners = ['changed' => 'statChanged'];
15 
16 public function updateMessage()
17 {
18 $this->message = '메시지 변경함.';
19 }
20 
21 public function statChanged()
22 {
23 $this->stat = '변경됨';
24 }
25 
26 public function resetStat()
27 {
28 $this->stat = '';
29 }
30 
31 public function render()
32 {
33 return view('livewire.test.eventtest');
34 }
35}

# binding, model

# wire:click="$emit('changed')"

# alpine.js

# alpine.js & javascript