先来看一个需求:下图div用v-for做了列表循环,现在想要span也一起循环,应该怎么做?
![3702f1b70f06c246d0838ec4c35c4f60.png](https://i-blog.csdnimg.cn/blog_migrate/0f92f8bcf841373739c905abf056bdca.png)
有3种方法可以实现
①:直接用v-for对span也循环一次(该方法虽然可以使用,但不要用这种方式,因为以后你会哭)
![b6e50df4bb7380e85cdbed6e0901611a.png](https://i-blog.csdnimg.cn/blog_migrate/e67e63b8db12cb76232a2cc765211b2c.png)
②:在div和span外面包裹一个div,给这个div加循环(该方法会额外增加一个多余的div标签)
![9c5f0d025deea8cc7c98cda632e5f3a7.png](https://i-blog.csdnimg.cn/blog_migrate/82a65d3f0550d8b70ac134485d38f358.jpeg)
③:若你不想额外增加一个div,此时应该使用template来实现(推荐)
![f8bbe04ba7114ced4f4504c2c369b4ec.png](https://i-blog.csdnimg.cn/blog_migrate/45fe627d379f01b5c1eed90dbc5aa2a4.png)
template的作用是模板占位符,可帮助我们包裹元素,但在循环过程当中,template不会被渲染到页面上
![b4788c1f35b22b28c489dc74e433c723.png](https://i-blog.csdnimg.cn/blog_migrate/ca7fcd479c0b3b9e1e2ca3e45eaff2b1.jpeg)
DEMO
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>v-for</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<template v-for="(item, index) in list" :key="item.id">
<div>{{item.text}}--{{index}}</div>
<span>{{item.text}}</span>
</template>
</div>
<script>
var vm = new Vue({
el: '#app',
data: {
list: [
{
id: "010120",
text: "How"
},
{
id: "010121",
text: "are"
},
{
id: "010122",
text: "you"
}
]
}
})
</script>
</body>
</html>