Day 15 | 元件状态:污染(被更改) Dirty

如果想在资料被「污染」也就是被更改过时,想要透过新增 Class 来做特别的显示,就可以使用 wire:dirty 来达成。这个功能比较常用在对资料的更改,例如:修改个人资料时要让使用者知道刚刚有改到哪些栏位,就很适合来用这个功能。

官方文件
DEMO

https://ithelp.ithome.com.tw/upload/images/20210918/20111805R50IgkJUOf.png

基础用法

由於只有在值被改变前会触发 dirty。如果用 wire:model.lazy 的话在滑鼠移开输入框时就会把值传回後端,因此就只会在移开前触发到 dirty,如要在保存前都维持 dirty 状态,则可以改用wire:model.defer 这样在送出按钮按下前都会维持 dirty 状态。

下面的范例是在修改 $foo 时让 <input> 加上让外框变红的 .border-red-500

<div>
    <input wire:dirty.class="border-red-500" wire:model.lazy="foo">
</div>

指定目标

跟前面几篇提到的一样,可以用 wire:target 来指定要监听哪个变数而触发,如此一来 dirty 就可以不用局限在 <input> 上面了!

<div>
    <span wire:dirty wire:target="foo">Updating...</span>
    <input wire:model.lazy="foo">
</div>

当然也可以加 Class 到其他元素上

<div>
    <label wire:dirty.class="text-red-500" wire:target="foo">Full Name</label>
    <input wire:model.lazy="foo">
</div>

也可以透过 wire:target="foo, bar",用逗号隔开不同的变数来指定多个 Target

<div>
    <label wire:dirty.class="text-red-500" wire:target="foo, bar">Full Name</label>
    <input wire:model.lazy="foo">
</div>

如果变数是 Array 的话还可以这样用

<div>
    <input type="text" wire:model="post.title">
    <input type="text" wire:model="post.author">
    <input type="text" wire:model="post.content">
 
    <div wire:dirty.class="text-red-500" wire:target="post">
        Updating Post...
    </div>
</div>

<<:  Day 2 靶机环境建立

>>:  第1章:RedHat与相关认证、RedHat发行Linux版本作业系统与发展史介绍

倒数第二天

终於到了倒数第二天 现在一直在努力的写前後端的程序码跟串接 在前端 RxDB 中有一些 Middle...

Day 28 Quantum Protocols and Quantum Algorithms

Quantum Key Distribution Qiskit Alice generates se...

Vue slot:作用域插槽、具名插槽的缩写

tags: Vuejs 作用域插槽 <slot> 内容在父模板编译,基於 Vue 的定义...

第9天~接续第2页-

接续第2页- 可参考什麽是Intent意图? https://litotom.com/ch5-2-i...

Navigation (2)

在 Android,navigation graph 是 resource 的一种,我们先建立 et...