Perulangan Di Vue Js

Tutorial kali ini akan membahas bagaimana menggunakan perulangan di vue.

Untuk melakukan ini di vue kita menggunakan directive v-for.

Menampilkan data array

Misalnya kita punya data array nama-nama siswa

siswa: ["budi","andi","caca"]

atau jika menggunakan struktur vue akan seperti ini.

export default {
  name: "App",
  data: () => {
    return {
      siswa: ["budi","andi","caca"]
    };
  }
};

Data tersebut akan kita tampilkan menggunakan v-for.Maka template vue nya akan menjadi seperti ini

<ul>
  <li v-for="nama in siswa">
  {{ nama }}
  </li>
</ul>

Kita menggunakan html list untuk menampilkan nama siswa.Bisa dilihat kita melakukan perulangan dengan variable siswa dan nama sebagai alias untuk item satuan.Kemudian karena ini hanya array kita langsung mencetak dengan {{nama}}.

Kita juga bisa menampilkan index dari masing-masing data tersebut dengan menambahkan kode seperti dibawah.

<ul>
  <li v-for="(nama,index) in siswa">
   {{index+1}}.{{ nama }}
  </li>
</ul>

Index diawali dari 0 jadi kita menambah 1 ketika mencetak.Maka akan keluar hasil seperti dibawah ini.

Menampilkan data object

Sebenarnya cara sama saja menampilkan data object ataupun array dengan v-for

Jika kita punya data seperti dibawah ini.

siswa : {
	nama:'budi',
	kelas:'XII-A',
	jurusan:'RPL'
}

Kode template sama saja

<ul>
  <li v-for="value in siswa">
   {{ value }}
  </li>
</ul>

Kita juga bisa menampilkan key dari object sebagimana index dari array sebelumnya.

<ul>
  <li v-for="(value,key) in siswa">
   {{key}} : {{ value }}
  </li>
</ul>

Maka akan mendapatkan hasil seperti dibawah ini.

Di object kita bisa menambahkan satu parameter lagi yaitu index sehingga menjadi seperti ini.

<ul>
  <li v-for="(value,key,index) in siswa">
    {{index+1}}. {{key}} : {{ value }}
  </li>
</ul>

Menampilkan Data Collection

Jika kita mendapatkan data dari api backend,seringkali data yang didapatkan berbentuk collection atau array object atau berformat data JSON.

Misalnya seperti data dibawah.

siswa : [
   {
    nama:'budi',
    kelas:'XII-A',
    jurusan:'RPL'
   },
   {
    nama:'andi',
    kelas:'XII-B',
    jurusan:'TKJ'
   },
   {
    nama:'caca',
    kelas:'XII-A',
    jurusan:'RPL'
    }
 ]
 

Kita akan menampilkan kedalam html tabel.Maka kode v-for untuk table kurang lebih seperti dibawah ini.

<table border="1">
  <tr>
    <th>No</th>
    <th>Nama</th>
    <th>Kelas</th>
    <th>Jurusan</th>
  </tr>
  <tr v-for="(data,index) in siswa">
    <td>{{index+1}}</td>
    <td>{{data.nama}}</td>
    <td>{{data.kelas}}</td>
    <td>{{data.jurusan}}</td>        
  </tr>
</table>

Kenapa kita meletakkan v-for di tr,karena tr lah yang akan kita looping sebanyak data siswa.data.nama berarti kita memanggil key nama dari variabel data yang sudah jadi objek dari perulangan siswa.

Attribut v-bind:key

Attribut ini bisa juga dipanggil hanya dengan :key.Jika kita menggunakan v-for maka vue menyarankan kita harus menggunakan attribute ini,di IDE apalagi yang menggunakan syntax linter ,akan menunjukan warning di baris kodenya jika kita tidak menambahkan key saat pakai v-for.Attribute ini berperan sebagai penanda unik ,kayak primary key lah kalau di database,agar vue bisa melakukan tracking perubahan setiap tag html saat dirender.

Asal dari :key ini bisa dari index dari array,key atau properti dari object.

Contohnya :

<ul>
  <li v-for="(value,index) in siswa" v-bind:key="index">
   {{index+1}}. {{ value }}
  </li>
</ul>

atau jika kita punya object yang memiliki attribute unik.

siswa : [
   {
   	id:1,
    nama:'budi'
   },
   {
   	id:2,
    nama:'andi'
   }
]

Maka kode htmlnya bisa seperti dibawah ini.

<ul>
  <li v-for="(data,index) in siswa" v-bind:key="data.id">
   {{index+1}}. {{ data.nama }}
  </li>
</ul>

Sampai sini dulu pembahasan mengenai penggunaan v-for,silahkan bertanya dibawah jika ada yang kurang dimengerti.