سلام دوستان. توی فریم‌ورک ویوو اگه یک لیست (آرایه یا آبجکت) داشته باشیم و بخوایم اون رو توی قسمت View نمایش بدیم، از دستور v-for استفاده می‌کنیم. استفاده از این دستور بصورت زیر هست:

<div id="app">

  <p v-for="item in items">
    {{ item }}
  </p>

   <!-- or -->
  <ul>
    <li v-for="user in users">
      {{ user.name }} / {{ user.age }}
    </li>
  </ul>

</div>
const app = new Vue({
  el: '#app',
  data:{
    items: [ 1, 2, 3 ],
    users: [
      { name: 'Evan', age: 34 },
      { name: 'Sarah', age: 27 },
    ]
  }
});

فرمت این دستور بصورت v-for="item in items" هست که توی اون items یک آرایه قابل پیمایش هست که توی قسمت data یا بطور کلی توی برنامه تعریف شده و قابل دسترسی هست. item هم یک اسم دلخواه برای المنتی از items هست که توی پیمایش فعلی اون رو داریم.

جالبه که بدونیم حلقه for...of هم توی v-for کار می‌کنه. ()

 

دستور v-for روی template

وقتی v-for رو یک المنت مثل تگ div اعمال میشه، خود اون المنت به همراه محتویات اون تکرار میشن:

<div v-for="user in users">
  {{ user.name }}
</div>

که خروجی کد بالا بصورت زیر هست:

<div id="app">
  <div>Evan</div>
  <div>Sarah</div>
</div>

اگه شرایطی داریم که می‌خوایم فقط محتویات المنت نمایش داده بشن، بجای div از template استفاده می‌کنیم:

<template v-for="user in users">
  {{ user.name }}
</template>

که خروجی این کد بصورت زیر هست:

<div id="app">
  Evan
  Sarah
</div>

 

v-for و آبجکت‌ها

آبجکت‌ها یا بطور کلی رو می‌تونیم توی v-for استفاده کنیم. آبجکت‌های جاوااسکریپت قابل پیمایش هستن. آبجکت user رو در نظر بگیرین:

const app = new Vue({
  el: '#app',
  data:{
    user: {
      name: 'Jack',
      age: 19,
      state: 'Texas'
    }
  }
});

اگه از دستور v-for برای نمایش user استفاده کنیم:

<div id="app">
  <div v-for="info in user">
    {{ info }}
  </div>
</div>

خروجی بصورت زیر خواهد بود:

Jack
19
Texas