VueJS - Binding: A Panduan untuk Pemula

Hai sana, superstar Vue.js masa depan! Saya sangat gembira menjadi panduan Anda dalam perjalanan menarik ini ke dunia binding Vue.js. Sebagai seseorang yang telah mengajar pemrograman selama tahun tahun, saya bisa katakan bahwa binding seperti saus rahasia yang membuat Vue.js begitu lezat. mari kita roll up lengan dan masuk ke dalam!

VueJS - Binding

Apa Itu Binding di Vue.js?

Sebelum kita masuk ke dalam hal-hal kecil, mari kita memahami apa arti binding. Dalam Vue.js, binding adalah cara kita menghubungkan data kita ke DOM (Document Object Model). Itu seperti membuat hubungan magis antara kode JavaScript Anda dan apa yang muncul di layar. Keren, kan?

Binding Kelas HTML

Bayangkan Anda sedang berpakaian untuk pesta. Anda mungkin memilih outfit yang berbeda-beda berdasarkan kesempatan, kan? Binding kelas HTML di Vue.js bekerja sama seperti itu. Kita bisa secara dinamis mengubah penampilan elemen kita berdasarkan data kita.

Binding Kelas Dasar

Mari kita mulai dengan contoh sederhana:

<div id="app">
<p :class="{ active: isActive }">Apakah saya aktif?</p>
</div>

<script>
new Vue({
el: '#app',
data: {
isActive: true
}
})
</script>

Dalam contoh ini, kita membinding kelas 'active' ke paragraf kita berdasarkan properti data isActive. Jika isActive benar, paragraf akan memiliki kelas 'active'. Jika itu salah, itu tidak akan.

Kelas Ganda

Tapi apa jika kita ingin mengelola kelas ganda? Tidak masalah! Vue.js telah menangani kita:

<div id="app">
<p :class="{ active: isActive, 'text-danger': hasError }">
Binding kelas ganda
</p>
</div>

<script>
new Vue({
el: '#app',
data: {
isActive: true,
hasError: false
}
})
</script>

Di sini, kita membinding dua kelas: 'active' dan 'text-danger'. Paragraf akan memiliki kelas 'active', tapi tidak 'text-danger' kecuali kita ubah hasError menjadi true.

Sintaksis Array

Kita juga bisa menggunakan array untuk membinding kelas. Itu seperti memiliki lemari pakaian kelas untuk dipilih:

<div id="app">
<p :class="[activeClass, errorClass]">Sintaksis array keren!</p>
</div>

<script>
new Vue({
el: '#app',
data: {
activeClass: 'active',
errorClass: 'text-danger'
}
})
</script>

Dalam kasus ini, kedua kelas 'active' dan 'text-danger' akan diterapkan ke paragraf.

Binding gaya inline

Sekarang, mari bicarakan tentang gaya inline. Itu seperti memberikan elemen Anda sebuah make-over di tempat!

Sintaksis Objek

Kita bisa membinding gaya inline menggunakan objek:

<div id="app">
<p :style="{ color: textColor, fontSize: fontSize + 'px' }">
Gaya saya!
</p>
</div>

<script>
new Vue({
el: '#app',
data: {
textColor: 'red',
fontSize: 20
}
})
</script>

Ini akan mengatur warna menjadi merah dan ukuran font menjadi 20px. Catatlah bagaimana kita bisa menggunakan camelCase (fontSize) atau kebab-case ('font-size') untuk properti gaya.

Sintaksis Array

Kita juga bisa menggunakan array gaya objek:

<div id="app">
<p :style="[baseStyles, overridingStyles]">Array gaya</p>
</div>

<script>
new Vue({
el: '#app',
data: {
baseStyles: {
color: 'blue',
fontSize: '20px'
},
overridingStyles: {
fontWeight: 'bold'
}
}
})
</script>

Ini memungkinkan kita untuk menerapkan beberapa objek gaya, dengan objek yang lebih belakang dalam array mengganti yang sebelumnya jika ada konflik.

Binding Input Form

Binding input form adalah tempat Vue.js benar-benar bersinar. Itu seperti memiliki telepon langsung antara input form Anda dan data Anda!

Input Teks

Mari kita mulai dengan input teks sederhana:

<div id="app">
<input v-model="message" placeholder="Edit saya">
<p>Pesan adalah: {{ message }}</p>
</div>

<script>
new Vue({
el: '#app',
data: {
message: ''
}
})
</script>

Petunjuk v-model membuat binding dua arah antara input dan properti data message. Setiap perubahan dalam input akan segera memperbarui message, dan sebaliknya.

Checkbox

Checkbox seperti saklar kecil. Mari kita bindingnya:

<div id="app">
<input type="checkbox" id="checkbox" v-model="checked">
<label for="checkbox">{{ checked }}</label>
</div>

<script>
new Vue({
el: '#app',
data: {
checked: false
}
})
</script>

Properti checked akan benar saat checkbox dicentang, dan salah saat itu tidak dicentang.

Radio Button

Radio button seperti pertanyaan pilihan ganda. Hanya satu yang bisa dipilih pada saat yang sama:

<div id="app">
<input type="radio" id="one" value="One" v-model="picked">
<label for="one">One</label>
<br>
<input type="radio" id="two" value="Two" v-model="picked">
<label for="two">Two</label>
<br>
<span>Dipilih: {{ picked }}</span>
</div>

<script>
new Vue({
el: '#app',
data: {
picked: ''
}
})
</script>

Properti picked akan diatur ke nilai radio button yang dipilih.

Select Dropdown

Akhirnya, mari kita lihat dropdown select:

<div id="app">
<select v-model="selected">
<option disabled value="">Silakan pilih salah satu</option>
<option>A</option>
<option>B</option>
<option>C</option>
</select>
<span>Dipilih: {{ selected }}</span>
</div>

<script>
new Vue({
el: '#app',
data: {
selected: ''
}
})
</script>

Properti selected akan diatur ke nilai opsi yang dipilih.

Ringkasan Metode Binding

Berikut ini adalah tabel rujukan cepat dari metode binding yang kita telah pelajari:

Tipe Binding Sintaksis Deskripsi
Kelas (Objek) :class="{ className: condition }" Terapkan kelas berdasarkan kondisi
Kelas (Array) :class="[class1, class2]" Terapkan beberapa kelas
Gaya (Objek) :style="{ property: value }" Terapkan gaya inline
Gaya (Array) :style="[styleObject1, styleObject2]" Terapkan beberapa objek gaya
Input Form v-model="dataProperty" Binding dua arah untuk input form

Dan itu adalah! Anda telah mengambil langkah pertama ke dunia menarik binding Vue.js. Ingat, latihan membuat sempurna, jadi jangan khawatir untuk mencoba konsep ini. Sebelum Anda tahu, Anda akan binding data seperti seorang pro! Selamat coding!

Credits: Image by storyset