互动事件顾名思义,就是前後端之间的互动啦!现在要从页面上触发後端的 Function 不用在自己写 JavaScript 然後用 AJAX 去帮你触发啦,也不用为了一个功能多写一只 Route。透过 Livewire 直接无痛呼叫写在 Livewire 内的 function,用起来体感满分!!
今天就使用简单的计数器来当范例,每当按下按钮就会让值加1:
class Day7 extends Component
{
public $count = 0;
public function addCount()
{
$this->count++;
}
...
<div>
<h2>{{ $count }}</h2>
<button wire:click="addCount">+</button>
</div>
非常简单的就完成了与後端的互动!!
注意:每次互动都会使页面重新渲染
事件 | 语法 |
---|---|
点击 | wire:click |
按键 | wire:keydown |
送出 | wire:submit |
或是一些页面元件有支援的事件,例如 wire:change
范例:
<input wire:keydown.enter="addCount">
<form wire:submit.prevent="save">
...
<button>Save</button>
</form>
当然要传递参数也是能够轻松做的:
public function setCount($value)
{
$this->count = $value;
}
<button wire:click="setCount(100)">设为100</button>
Livewire 也提供了一些方法,好让你更轻松的去操作。
Function | 功能 |
---|---|
$refresh | 重新渲染页面,注意:并不是将页面重置的意思 |
$set('property', value) | 可以直接改这个变数的值 |
$toggle('property') | 同上,但是是改 Boolean 的值 |
$emit('event', ...params) | 触发全域事件,後面章节会介绍 |
$event | 能保存事件的特殊变数,像是wire:change="setSomeProperty($event.target.value)" ,跟 Vue 在触发事件时拿到的类似,会拿到 DOM 发生的事件,详见 MDN 文件 - Event |
这里就使用最常用到的 $set
来做范例,直接将计数器设为 999。
<button wire:click="$set('count', 999)">999</button>
运行之後打开 http://127.0.0.1:8000/day7
就能看到今天的范例啦!
档案的话分别在:
app\Http\Livewire\Example\Day7.php
resources\views\livewire\example\day7.balde.php
<<: [Day9] Flutter - 按钮元件 ( Button )
这题真的需要花一点功夫,题目并不难懂,但是不能用直观的方式去写,可以上网搜寻关键字「find cyc...
Change Operating Mode 攻击者修改 OT 设备的操作状态,为了要取得权限,PLC...
谈谈插入排序(Insertion Sort) 在开始今天之前,先来看看影片(约2分钟)吧! http...
Youtube连结:https://bit.ly/3m1VQWV 在我们了解Binary Tree...
Colab连结 一般我们在做机器学习任务时,在模型里计算的资料型态采用的是 float32 (即占用...