const items = ref([{ message: 'Foo' }, { message: 'Bar' }])
<li v-for="item in items">
{{ item.message }}
</li>
const parentMessage = ref('Parent')
const items = ref([{ message: 'Foo' }, { message: 'Bar' }])
<li v-for="(item, index) in items">
{{ parentMessage }} - {{ index }} - {{ item.message }}
</li>
const myObject = reactive({
title: 'How to do lists in Vue',
author: 'Jane Doe',
publishedAt: '2016-04-10'
})
<ul>
<li v-for="value in myObject">
{{ value }}
</li>
</ul>
<li v-for="(value, key) in myObject">
{{ key }}: {{ value }}
</li>
<li v-for="(value, key, index) in myObject">
{{ index }}. {{ key }}: {{ value }}
</li>
<span v-for="n in 10">{{ n }}</span>
<template>
上的 v-for与模板上的 v-if 类似,你也可以在 <template>
标签上使用 v-for 来渲染一个包含多个元素的块。例如:
<ul>
<template v-for="item in items">
<li>{{ item.msg }}</li>
<li class="divider" role="presentation"></li>
</template>
</ul>
<!--
这会抛出一个错误,因为属性 todo 此时
没有在该实例上定义
-->
<li v-for="todo in todos" v-if="!todo.isComplete">
{{ todo.name }}
</li>
<template>
再在其上使用 v-for 可以解决这个问题 (这也更加明显易读):<template v-for="todo in todos">
<li v-if="!todo.isComplete">
{{ todo.name }}
</li>
</template>
<div v-for="item in items" :key="item.id">
<!-- 内容 -->
</div>
<template v-for>
时,key 应该被放置在这个 <template>
容器上:<template v-for="todo in todos" :key="todo.name">
<li>{{ todo.name }}</li>
</template>
<MyComponent v-for="item in items" :key="item.id" />
<MyComponent
v-for="(item, index) in items"
:item="item"
:index="index"
:key="item.id"
/>