DEV Community

Muhammad Iqbal
Muhammad Iqbal

Posted on

x-model

x-model pada Alpine.js digunakan untuk mengikat (bind) elemen form seperti input, textarea, checkbox, radio buttons, dan select dropdowns ke data komponen secara dua arah (two-way binding). Dengan menggunakan x-model, setiap perubahan pada input elemen akan secara otomatis memperbarui data dalam komponen, dan sebaliknya, setiap perubahan pada data komponen akan secara otomatis memperbarui nilai input elemen.

Berikut adalah beberapa kegunaan utama dari x-model pada Alpine.js:

A. Two-way Data Binding:

  • x-model memungkinkan dua arah pengikatan data antara elemen form dan data komponen. Perubahan pada input akan mengupdate data, dan perubahan pada data akan mengupdate input.
   <div x-data="{ message: 'Hello, World!' }">
       <input x-model="message" type="text">
       <p x-text="message"></p>
   </div>
Enter fullscreen mode Exit fullscreen mode

B. Mengelola State Form:

  • x-model mempermudah pengelolaan state form dalam komponen, sehingga kamu bisa dengan mudah menangani data input dari pengguna.
   <div x-data="{ username: '', email: '' }">
       <form>
           <label for="username">Username:</label>
           <input id="username" x-model="username" type="text">

           <label for="email">Email:</label>
           <input id="email" x-model="email" type="email">

           <p>Username: <span x-text="username"></span></p>
           <p>Email: <span x-text="email"></span></p>
       </form>
   </div>
Enter fullscreen mode Exit fullscreen mode

C. Checkbox dan Radio Buttons:

  • x-model dapat digunakan untuk mengikat checkbox dan radio buttons ke data komponen.
   <div x-data="{ accepted: false, gender: '' }">
       <label>
           <input type="checkbox" x-model="accepted">
           Accept Terms and Conditions
       </label>
       <p>Accepted: <span x-text="accepted"></span></p>

       <label>
           <input type="radio" x-model="gender" value="male">
           Male
       </label>
       <label>
           <input type="radio" x-model="gender" value="female">
           Female
       </label>
       <p>Gender: <span x-text="gender"></span></p>
   </div>
Enter fullscreen mode Exit fullscreen mode

D. Select Dropdown:

  • x-model dapat digunakan untuk mengikat select dropdown ke data komponen.
   <div x-data="{ selectedOption: '' }">
       <select x-model="selectedOption">
           <option value="option1">Option 1</option>
           <option value="option2">Option 2</option>
           <option value="option3">Option 3</option>
       </select>
       <p>Selected Option: <span x-text="selectedOption"></span></p>
   </div>
Enter fullscreen mode Exit fullscreen mode

E. Textarea:

  • x-model dapat digunakan untuk mengikat textarea ke data komponen.
   <div x-data="{ content: '' }">
       <textarea x-model="content"></textarea>
       <p>Content: <span x-text="content"></span></p>
   </div>
Enter fullscreen mode Exit fullscreen mode

Contoh Implementasi x-model

Berikut adalah beberapa contoh implementasi x-model untuk berbagai jenis input:

A. Text Input:

   <div x-data="{ message: 'Hello, World!' }">
       <input x-model="message" type="text">
       <p x-text="message"></p>
   </div>
Enter fullscreen mode Exit fullscreen mode

B. Checkbox:

   <div x-data="{ accepted: false }">
       <label>
           <input type="checkbox" x-model="accepted">
           Accept Terms and Conditions
       </label>
       <p>Accepted: <span x-text="accepted"></span></p>
   </div>
Enter fullscreen mode Exit fullscreen mode

C. Radio Buttons:

   <div x-data="{ gender: '' }">
       <label>
           <input type="radio" x-model="gender" value="male">
           Male
       </label>
       <label>
           <input type="radio" x-model="gender" value="female">
           Female
       </label>
       <p>Gender: <span x-text="gender"></span></p>
   </div>
Enter fullscreen mode Exit fullscreen mode

D. Select Dropdown:

   <div x-data="{ selectedOption: '' }">
       <select x-model="selectedOption">
           <option value="option1">Option 1</option>
           <option value="option2">Option 2</option>
           <option value="option3">Option 3</option>
       </select>
       <p>Selected Option: <span x-text="selectedOption"></span></p>
   </div>
Enter fullscreen mode Exit fullscreen mode

E. Textarea:

   <div x-data="{ content: '' }">
       <textarea x-model="content"></textarea>
       <p>Content: <span x-text="content"></span></p>
   </div>
Enter fullscreen mode Exit fullscreen mode

Kesimpulan

x-model pada Alpine.js sangat berguna untuk mengikat elemen form ke data komponen secara dua arah, memungkinkan pembaruan otomatis antara input pengguna dan state komponen. Ini membuat pengelolaan state form menjadi lebih sederhana dan intuitif, serta meningkatkan interaktivitas dan responsivitas aplikasi web.

Top comments (0)