一、v-for
1、迭代数组
遍历数组中的每一项。也可以是对象数组。
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!-- item表示数组中的每一项 -->
<p v-for="item in list">{{item}}</p>
<!-- item表示数组中每一项,i为索引 -->
<p v-for="(item,i) in list">{{i}}——{{item}}</p>
</div>
<script>
var vm = new Vue({
el: '#app',
data: {
list:[4,6,7,82,2]
}
})
</script>
</body>
</html>
2、迭代对象中的属性
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!-- 第一个参数为值,第二个为键,还有第三个为索引(不常用) -->
<p v-for="(val,key) in user">值{{val}}+键{{key}}</p>
</div>
<script>
var vm = new Vue({
el: '#app',
data: {
user:{
id:1,
name:'qiurx',
gender:'男'
}
}
})
</script>
</body>
</html>
3、迭代数字
迭代数字,次数从1开始算。
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!-- 直接循环数字,count会从1开始 -->
<p v-for="count in 10">第{{count}}次循环</p>
</div>
<script>
var vm = new Vue({
el: '#app',
data: {
}
})
</script>
</body>
</html>
二、特殊说明
2.20+当在组件中使用v-for,key是必须的。
Vue用v-for跟新已渲染过的元素列表时,默认“就地复用”,数据项顺序被改变(例如复选按钮),Vue将不是移动dom元素来匹配数据的顺序,而是简单的复用此处每个元素,并且确保他在特定索引下显示已被渲染过的每个元素(往复选按钮开头加了东西,原本被选中的按钮索引不会因多了复选按钮而下移,而是同样的还在原来的索引位置选中元素)。
往最前面增加一项后。
为了给Vue一个提示,以便跟踪每个节点的身份,从而重用和重新排列现有元素,需为每一项提供一个key属性作为唯一标识。
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!-- 双向数据绑定输入框和data中的数据 -->
<span>id:<input type="text" v-model="id"/></span>
<span>name:<input type="text" v-model="name"/></span>
<input type="button" value="增加" @click="add"/>
<!-- 注意:v-for循环时,key只能是number或者string -->
<!-- 注意:key在使用时,必须使用v-bind绑定此属性 -->
<!-- 在组件中或者特殊情况使用v-for,必须使用key指定唯一的值 -->
<p v-for="item in list" :key="item.id">
<input type="checkbox"/>{{item.id}}——{{item.name}}
</p>
</div>
<script>
var vm = new Vue({
el: '#app',
data: {
list:[
{id:1,name:'路人甲'},
{id:2,name:'小兵乙'},
{id:3,name:'罗罗丙'}
],
id:'',
name:'',
},
methods:{
add(){
this.list.unshift({id:this.id,name:this.name});
}
}
})
</script>
</body>
</html>
三、品牌管理案例
网友评论