- Apa Itu x-model?
- Mendukung Berbagai Jenis Input
- Binding ke Array (Checkbox Multiple)
- Manfaat Reactive State
- Kesimpulan
Halo teman-teman semuanya, di artikel sebelumnya kita udah belajar bagaimana cara menangani event dengan x-on atau @event. Sekarang kita akan membahas salah satu fitur paling penting di Alpine.js, yaitu reactive state menggunakan directive x-model.
Dengan x-model, kita bisa membuat binding dua arah antara elemen input HTML dan data di x-data. Artinya, saat user mengisi form, data di JavaScript langsung berubah, dan sebaliknya, jika datanya berubah, tampilan juga langsung menyesuaikan.
Apa Itu x-model?
x-model adalah directive yang digunakan untuk menghubungkan value dari elemen input ke sebuah properti di x-data. Ini yang disebut two-way data binding, karena perubahan di salah satu sisi (input atau data) akan langsung memengaruhi sisi lainnya.
Contoh sederhana:
<div x-data="{ nama: '' }">
<input type="text" x-model="nama" placeholder="Masukkan nama">
<p>Halo, <span x-text="nama"></span>!</p>
</div>
Ketika kita mengetik di input, teks di bawahnya akan langsung mengikuti nilai yang kita masukkan.
Mendukung Berbagai Jenis Input
-
Input Teks
<input type="text" x-model="teks"> -
Textarea
<textarea x-model="komentar"></textarea> -
Checkbox
<input type="checkbox" x-model="setuju"> <p x-text="setuju ? 'Disetujui' : 'Belum disetujui'"></p> -
Radio Button
<input type="radio" x-model="gender" value="Laki-laki"> Laki-laki <input type="radio" x-model="gender" value="Perempuan"> Perempuan <p x-text="gender"></p> -
Select Dropdown
<select x-model="pilihan"> <option value="">-- Pilih --</option> <option value="satu">Satu</option> <option value="dua">Dua</option> </select> <p x-text="pilihan"></p>
Binding ke Array (Checkbox Multiple)
Kalau kita punya beberapa checkbox dan ingin menyimpan hasilnya dalam array, x-model juga bisa:
<div x-data="{ hobi: [] }">
<label><input type="checkbox" value="Membaca" x-model="hobi"> Membaca</label>
<label><input type="checkbox" value="Menulis" x-model="hobi"> Menulis</label>
<label><input type="checkbox" value="Bersepeda" x-model="hobi"> Bersepeda</label>
<p x-text="hobi.join(', ')"></p>
</div>
Saat user mencentang hobi, data hobi akan terisi array dari nilai-nilai yang dipilih.
Manfaat Reactive State
Dengan reactive state dari x-model, kita bisa:
- Menyimpan data form secara langsung tanpa nulis banyak JavaScript
- Menampilkan preview input secara real-time
- Mempermudah validasi atau manipulasi data saat input
Semuanya dilakukan langsung di HTML, tanpa harus bikin banyak kode JavaScript.
Kesimpulan
Di artikel ini kita udah belajar cara menggunakan x-model untuk membuat binding dua arah antara input dan data. Kita juga udah lihat contoh penggunaannya di berbagai tipe input, mulai dari teks, checkbox, radio button, hingga select dropdown.
Di artikel berikutnya, kita akan membahas Conditional Rendering, supaya kita bisa menampilkan atau menyembunyikan elemen berdasarkan kondisi tertentu.
Terima Kasih
Artikel ini dibaca sebanyak 1.643 kali
{ setTimeout(() => { showShimmer = false; }, 300); })"
:class="{'opacity-0': !loaded, 'opacity-100': loaded}"
class="lazy w-full h-auto rounded-xl border border-white dark:border-neutral-700/80 transition-opacity duration-500"
loading="lazy"
/>
SAWERIA
Memuat komentar...