VueJS - Binding: Panduan untuk Pemula
Halo teman, superstar Vue.js masa depan! Saya sangat senang menjadi panduanmu 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. Jadi, mari kita roll up our sleeves dan masuk ke dalam!
Apa Itu Binding di Vue.js?
Sebelum kita masuk ke detailnya, mari kita pahami apa arti binding. Di Vue.js, binding adalah cara kita menghubungkan data kita ke DOM (Document Object Model). Itu seperti membuat sebuah hubungan magis antara kode JavaScriptmu dan apa yang muncul di layar. Keren, kan?
Binding Kelas HTML
Bayangkan kau sedang memakai pakaian untuk pesta. Mungkin kau akan memilih pakaian berbeda-beda berdasarkan kesempatan, kan?BindingUtil 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, tidak akan ada.
Kelas Ganda
Tapi apa kalau kita ingin mengelola kelas ganda? Tak ada masalah! Vue.js telah memberikan solusi bagi 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 mengubah hasError
menjadi benar.
Sintaks Array
Kita juga bisa menggunakan array untuk membinding kelas. Itu seperti memiliki lemari pakaian kelas untuk dipilih:
<div id="app">
<p :class="[activeClass, errorClass]">Sintaks array bagus!</p>
</div>
<script>
new Vue({
el: '#app',
data: {
activeClass: 'active',
errorClass: 'text-danger'
}
})
</script>
Dalam kasus ini, keduanya 'active' dan 'text-danger' akan diterapkan ke paragraf.
Binding gaya inline
Sekarang, mari bicarakan tentang gaya inline. Itu seperti memberikan elemenmu make over secara langsung!
Sintaks Objek
Kita bisa membinding gaya inline menggunakan objek:
<div id="app">
<p :style="{ color: textColor, fontSize: fontSize + 'px' }">
Ganti gaya saya!
</p>
</div>
<script>
new Vue({
el: '#app',
data: {
textColor: 'red',
fontSize: 20
}
})
</script>
Ini akan menset warna menjadi merah dan ukuran font menjadi 20px. Catatlah bagaimana kita bisa menggunakan camelCase (fontSize
) atau kebab-case ('font-size') untuk properti gaya.
Sintaks 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 muncul kemudian di 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 dan data kita!
Input Teks
Mari kita mulai dengan input teks sederhana:
<div id="app">
<input v-model="message" placeholder="Edit aku">
<p>Pesan adalah: {{ message }}</p>
</div>
<script>
new Vue({
el: '#app',
data: {
message: ''
}
})
</script>
Direktif v-model
membuat binding dua arah antara input dan properti data message
. Setiap perubahan di input akan segera memperbarui message
, dan sebaliknya.
Checkbox
Checkbox seperti saklar kecil on/off. Berikut cara membindingnya:
<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="">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 adalah tabel rujukan cepat metode binding yang kita bahas:
Tipe Binding | Sintaks | 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 saja! Kamu telah mengambil langkah pertama ke dunia menarik binding Vue.js. Ingat, latihan membuat sempurna, jadi jangan takut untuk mencoba konsep ini. Sebelum kamu tahu, kamu akan binding data seperti seorang ahli! Selamat coding!
Credits: Image by storyset