Catatan Belajar Vue : Conditional dan Lists
Biasanya yang paling sering dilakukan di view itu kalau gak mainin IF
ya nge-loopingdata.Vue sudah memiliki directive tersendiri untuk hal itu, ada v-if
untuk IF
dan v-for
untuk loop. Untuk contoh v-if
bisa salin html berikut.
<!DOCTYPE html> <html lang="en"> <head> <title>Show & Lists</title> <script src="https://vuejs.org/js/vue.min.js"></script> </head> <body> <div id="app"> <button v-on:click="showHide">{{ string }}</button> <div v-if="show"> Muncul </div> </div> </body> <script> new Vue({ el: '#app', data: { show: false }, methods: { showHide() { this.show = !this.show } }, computed: { string(){ if(this.show == true) { return "Hide" }else{ return "Show" } } } }) </script> </html>
Hasilnya seperti ini :
Directive v-if
pada div membaca properti show jika true maka div tersebut dimunculkan, dan jika false akan dihilangkan. Sebenarnya untuk menghilangkan dan memunculkan ada directive lainnya yaitu v-show
. Bedanya v-if
dan v-show
itu saat penerapan DOM di browser, v-if
benar-benar menghilangkan dari struktur html sedangkan v-show
hanya menyembunyikan. Agar lebih jelas bisa salin html berikut dan lihat hasilnya di console developer tools browser.
<!DOCTYPE html> <html lang="en"> <head> <title>Show & Lists</title> <script src="https://vuejs.org/js/vue.min.js"></script> </head> <body> <div id="app"> <button v-on:click="showHide">{{ string }}</button> <div v-if="show"> Muncul </div> <div v-show="show"> Ini v-show </div> </div> </body> <script> new Vue({ el: '#app', data: { show: false }, methods: { showHide() { this.show = !this.show } }, computed: { string(){ if(this.show == true) { return "Hide" }else{ return "Show" } } } }) </script> </html>
Lihat di console, yang menggunakan v-show
saat tidak dimunculkan ditambahkan style="display:none"
sedangkan yang v-if
sama sekali tidak ada di browser. Begitupun saat muncul, yang v-if
mendadak muncul dan style="display:none"
si v-show
juga hilang.
Untuk v-if
masih ada v-else-if
dan v-else
, untuk lebih detil bisa dilihat di situs ofisial vue.
Sekarang Loop atau pengulangan. Langsung ajalah, salin html berikut.
<!DOCTYPE html> <html lang="en"> <head> <title>Show & Lists</title> <script src="https://vuejs.org/js/vue.min.js"></script> </head> <body> <div id="app"> <button v-on:click="showHide">{{ string }}</button> <div v-if="show"> <p>Daftar Buku</p> <ul> <li v-for="book in books">{{ book.title }} ( {{ book.price }} )</li> </ul> </div> </div> </body> <script> new Vue({ el: '#app', data: { show: false, books : [ {title: "Cara beternak Lele", price: 45000}, {title: "Kaya tanpa pesugihan", price: 45000}, {title: "Kiat-kiat MLM", price: 45000} ] }, methods: { showHide() { this.show = !this.show } }, computed: { string(){ if(this.show == true) { return "Hide" }else{ return "Show" } } } }) </script> </html>
Pada HTML list saya tambahkan v-for
dengan struktur v-for=alias in properti
, dan selanjutnya tinggal panggil aja dengan cara alias.key
pada sumber data. Hasilnya akan seperti ini.
Referensi :
- https://vuejs.org/v2/guide/conditional.html
- https://www.youtube.com/watch?v=sI_vgLd_CyU&list=PL55RiY5tL51p-YU-Uw90qQH419BM4Iz07&index=5