您现在的位置是:首页 > Javascript
当前栏目
vue中的v-for循环
2023-03-31 10:41:48 时间
1.v-for遍历普通数组
in前面如果是一个变量,那么该变量保存的是数组中的数据in前面如果是两个变量,那么第一个变量保存的是数组中的数据,第二个变量保存的是下标
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<!-- 绑定事件 v-on: 简写为@ -->
<button @click="add">点击在数组最后添加元素</button>
<ul style="list-style-type: none;">
<!-- item是数组里面的元素 index是数组的下标 -->
<li v-for="(item,index) in list">{{index}}-{{item}}</li>
</ul>
</div>
<script src="/vue.js"></script>
<script>
new Vue({
el: '#app',
data: {
list: ['猪方', '战神', '小金子', '楠神']
},
methods: {
add() {
this.list.push('黑牛')
}
},
})
</script>
</body>
</html>
2.v-for遍历对象
如果是一个变量,那么保存的是对象中的属性值
如果是两个变量,那么第一个变量保存的是属性值,第二个变量保存的是属性名
如果是三个变量,那么第一个变量保存的是属性值,第二个变量保存的是属性名,第三个变量保存的是下标
v-for="o1 in obj" o1:属性值
v-for="(o1,o2) in obj" o1:属性值 o2:属性名
v-for="(o1,o2,o3) in obj" o1:属性值 o2:属性名 o3:下标
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<ul>
<li v-for="item in obj">{{item}}</li>
<hr>
<li v-for="(val,key) in obj">{{ key }}-{{ val }}</li>
</ul>
</div>
<script src="./vue.js"></script>
<script>
new Vue({
el: '#app',
data: {
obj: {
name: '卡拉米',
age: 16,
sex: '男',
}
}
})
</script>
</body>
</html>
3.v-for循环数字
in后面不仅可以放数组、对象数组、对象,还可以放数字
在in前面用一个变量存储当前次数,注意:此变量是从1开始,而不是从0开始
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<ul style="list-style-type: none;">
<!-- v-for='遍历的数 in 遍历的范围' -->
<li v-for="num in 9">{{num}}</li>
</ul>
</div>
<script src="/vue.js"></script>
<script>
new Vue({
el: '#app',
})
</script>
</body>
</html>
4. Key是什么?
Key 特殊属性主要用做 Vue 的虚拟 DOM 算法在将新节点列表与旧列表进行比较时识别 VNode 的提示。在没有键的情况下,Vue 使用一种算法来最小化元素移动,并尝试尽可能多地就地修补/重用相同类型的元素。使用键,它将根据键的顺序更改对元素进行重新排序,并且不再存在键的元素将始终被删除/销毁。
5.有无Key值不同调用方法
Vue内部会对有无Key值的for循环进行不同方法的处理
(1) patchKeyedChildren
有 Key, 进行 patchKeyedChildren
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<!-- @click="list.splice(下标,删除的数量,添加的元素)" -->
<button @click="list.splice(1,0,{name:'狗屎',age:11,sex:'男',id:4})">点击添加对象</button>
<ul>
<li v-for="item in list" :key="item.id">
<!-- 单选框 -->
<input type="checkbox">
<!-- 行内元素 -->
<span>{{item.name}}</span>
</li>
</ul>
</div>
<script src="/vue.js"></script>
<script>
new Vue({
el:'#app',
data:{
list:[
{name:'战神',age:18,sex:'男',id:1},
{name:'金子',age:18,sex:'男',id:2},
{name:'铜牌',age:18,sex:'男',id:3}
]
}
})
</script>
</body>
</html>
(2)patchUnKeyedChildren
没有 Key ,进行 patchUnKeyedChildren
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<!-- @click="list.splice(下标,删除的数量,添加的元素)" -->
<button @click="list.splice(1,0,{name:'狗屎',age:11,sex:'男',id:4})">点击添加对象</button>
<ul>
<li v-for="item in list">
<!-- 单选框 -->
<input type="checkbox">
<!-- 行内元素 -->
<span>{{item.name}}</span>
</li>
</ul>
</div>
<script src="/vue.js"></script>
<script>
new Vue({
el:'#app',
data:{
list:[
{name:'战神',age:18,sex:'男',id:1},
{name:'金子',age:18,sex:'男',id:2},
{name:'铜牌',age:18,sex:'男',id:3}
]
}
})
</script>
</body>
</html>
相关文章
- TiDB Binlog 组件正式开源
- 使用Visual Studio Code对Node.js进行断点调试
- 推荐!数据可视化的十种优秀JavaScript图表库
- Node.js在复杂集成场景下占据统治地位的五个理由
- 玩转Node.js单元测试
- Node.js中内存泄漏分析
- Angular对React:一场关于Web开发者支持率的史诗对决
- 热点推荐:什么是后端开发?
- 谈谈Spring boot 启动层面的开发
- 使用NodeJS将文件或图像上传到服务器
- 编写React组件的最佳实践
- JavaScript MV*框架最值得关注的七个亮点
- 前端开发指南:如何利用PHP Cake框架构建应用
- 基于React与Vue后,移动开源项目Weex如何定义未来
- NodeJS和C++之间的类型转换
- jQuery中的常用到的三十九个技巧
- 官宣|Google Developers中国网站发布!
- NodeJS和C++之间的类型转换
- .NET Core首例Office开源跨平台组件(NPOI Core)
- 如何写出漂亮的React组件