Vue指令之v-forkey属性

1.迭代数组

<ul><li v-for="(item, i) in list">索引:{{i}} --- 姓名:{{item.name}} --- 年龄:{{item.age}}</li>
</ul>

2.迭代对象中的属性

 <!-- 循环遍历对象身上的属性 --><div v-for="(val, key, i) in userInfo">{{val}} --- {{key}} --- {{i}}</div>

3.迭代数字

<p v-for="i in 10">这是第 {{i}} 个P标签</p>

4.循环普通数组

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><script src="./lib/vue-2.4.0.js"></script>
</head><body><div id="app"><!-- <p>{{list[0]}}</p><p>{{list[1]}}</p><p>{{list[2]}}</p><p>{{list[3]}}</p><p>{{list[4]}}</p> --><p v-for="(item, i) in list">索引值:{{i}} --- 每一项:{{item}}</p></div><script>// 创建 Vue 实例,得到 ViewModelvar vm = new Vue({el: '#app',data: {list: [1, 2, 3, 4, 5, 6]},methods: {}});</script>
</body></html>

5.循环对象数组

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><script src="./lib/vue-2.4.0.js"></script>
</head><body><div id="app"><p v-for="(user, i) in list">Id:{{ user.id }} --- 名字:{{ user.name }} --- 索引:{{i}}</p></div><script>// 创建 Vue 实例,得到 ViewModelvar vm = new Vue({el: '#app',data: {list: [{ id: 1, name: 'zs1' },{ id: 2, name: 'zs2' },{ id: 3, name: 'zs3' },{ id: 4, name: 'zs4' }]},methods: {}});</script>
</body></html>

6.循环对象

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><script src="./lib/vue-2.4.0.js"></script>
</head><body><div id="app"><!-- 注意:在遍历对象身上的键值对的时候, 除了 有  val  key  ,在第三个位置还有 一个 索引  --><p v-for="(val, key, i) in user">值是: {{ val }} --- 键是: {{key}} -- 索引: {{i}}</p></div><script>// 创建 Vue 实例,得到 ViewModelvar vm = new Vue({el: '#app',data: {user: {id: 1,name: '托尼·颗',gender: '男'}},methods: {}});</script>
</body></html>

7.迭代数字

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><script src="./lib/vue-2.4.0.js"></script>
</head><body><div id="app"><!-- in 后面我们放过  普通数组,对象数组,对象, 还可以放数字 --><!-- 注意:如果使用 v-for 迭代数字的话,前面的 count 值从 1 开始 --><p v-for="count in 10">这是第 {{ count }} 次循环</p></div><script>// 创建 Vue 实例,得到 ViewModelvar vm = new Vue({el: '#app',data: {},methods: {}});</script>
</body></html>

2.2.0+ 的版本里,当在组件中使用 v-for 时,key 现在是必须的。

当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用 “就地复用” 策略。如果数据项的顺序被改变,Vue将不是移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。
为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key 属性。
完整代码:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><script src="./lib/vue-2.4.0.js"></script>
</head><body><div id="app"><div><label>Id:<input type="text" v-model="id"></label><label>Name:<input type="text" v-model="name"></label><input type="button" value="添加" @click="add"></div><!-- 注意: v-for 循环的时候,key 属性只能使用 number获取string --><!-- 注意: key 在使用的时候,必须使用 v-bind 属性绑定的形式,指定 key 的值 --><!-- 在组件中,使用v-for循环的时候,或者在一些特殊情况中,如果 v-for 有问题,必须 在使用 v-for 的同时,指定 唯一的 字符串/数字 类型 :key 值 --><p v-for="item in list" :key="item.id"><input type="checkbox">{{item.id}} --- {{item.name}}</p></div><script>// 创建 Vue 实例,得到 ViewModelvar vm = new Vue({el: '#app',data: {id: '',name: '',list: [{ id: 1, name: '李斯' },{ id: 2, name: '嬴政' },{ id: 3, name: '赵高' },{ id: 4, name: '韩非' },{ id: 5, name: '荀子' }]},methods: {add() { // 添加方法this.list.unshift({ id: this.id, name: this.name })}}});</script>
</body></html>

如果不使用key的话

添加新元素进去之后,勾选的对应的是索引号,就会出现bug

但是用key的话,就不会有这样的bug了,勾选的一样是荀子

Vue v-for使用详解相关推荐

  1. 加载vue文件步骤_vue中.vue文件解析步骤详解

    这次给大家带来vue中.vue文件解析步骤详解,vue中.vue文件解析的注意事项有哪些,下面就是实战案例,一起来看一下. 我们平时写的 .vue 文件称为 SFC(Single File Compo ...

  2. 实例化vue发生了什么?(详解vue生命周期)

    实例化vue发生了什么?(详解vue生命周期) 本文将对vue的生命周期进行详细的讲解,让你了解一个vue实例的诞生都经历了什么~ 我在Github上建立了一个存放vue笔记的仓库,以后会陆续更新一些 ...

  3. 矢量控制与V/F控制详解

    原文:http://m.elecfans.com/article/714518.html 一.矢量控制 1.矢量控制简介 矢量控制是一种电机的磁场定向控制方法:以异步电动机的矢量控制为例:它首先通过电 ...

  4. vue中mint-ui使用详解

    这次给大家带来vue中mint-ui使用详解,vue中mint-ui使用的注意事项有哪些,下面就是实战案例,一起来看一下. mint-ui在vue中的使用,供大家参考,具体内容如下 首先放上mint- ...

  5. vue基础扩展8--solt详解

    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><title& ...

  6. Vue路由传参详解(params 与 query)

    Vue路由传参详解(params 与 query) 前言: 路由传参分为 params 传参与 query 传参 params 传参类似于网络请求中的 post 请求,params 传过去的参数不会显 ...

  7. vue如何过滤html标签,Vue过滤器filters使用详解

    这次给大家带来Vue过滤器filters使用详解,Vue过滤器filters使用的注意事项有哪些,下面就是实战案例,一起来看一下. 示例代码 采用vue单文件组件,使用moment插件格式化日期 {{ ...

  8. mixins php,vue的mixins属性详解

    这篇文章主要介绍了vue的mixins属性详解,现在分享给大家,也给大家做个参考. 首先先给出官网 https://vuejs.org/v2/guide/mixins.html 今天在开发项目的时候要 ...

  9. ant design pro vue 动态路由 流程详解

    ant design pro vue 动态路由 流程详解 前言 流程图 流程1 src/permission.js 流程2 src/store/modules/user.js 流程3 src/perm ...

  10. jq的插件 vue中引用_详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件

    本篇文章主要介绍了详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件,具有一定的参考价值,有兴趣的可以了解一下 使用vue-cli构建的vue项目,webpack的配置文 ...

最新文章

  1. 开玩笑写代码获奥斯卡?计算机图形专家这样 5 次捧回大奖!
  2. crowd counting_[Crowd_Counting]-PGCNet-ICCV2019
  3. WorkFlow设计篇Step.2—传参的用法-订单金额的处理(续)-WF4.0
  4. 关于fragment之间的数据传输
  5. python程序设计报告-20183122 实验一《Python程序设计》实验报告
  6. 自动化机器学习(AutoML)之自动贝叶斯调参
  7. @TableLogic注解表示逻辑删除
  8. [css] 使用css3做一个魔方旋转的效果
  9. 解读多云跨云下的容器治理与实践
  10. ActiveReports 9实战教程(2): 准备数据源(设计时、运行时)
  11. OpenCV3.4.3+Qt5.9.4(QtCreator)开发环境搭建
  12. 面向能源效率的云计算
  13. PHP字符串函数 查找字符位置函数
  14. 2017车载后市场年终回顾:天下武功,唯快不破
  15. Python 实战案例--计算圆、矩形的周长和面积
  16. MSP430待机功耗问题
  17. 【Fungus笔记】No.10:Portrait(人物形象) 演出
  18. linux电脑mac地址修改,linux修改MAC地址/localeLinux -电脑资料
  19. 软件工程课程的第一次作业
  20. 用 Python“科学”预测下《哪吒》票房

热门文章

  1. Lucene学习总结之三:Lucene的索引文件格式(1)
  2. 朴素贝叶斯(Naive Bayes),“Naive”在何处?
  3. python中使用pickle进行序列化
  4. 旅行场景下的个性化营销平台揭秘
  5. drools规则引擎因为内存泄露导致的内存溢出
  6. Linux基础命令---comm
  7. 学习ASP.NET Core Razor 编程系列十三——文件上传功能(一)
  8. Linux学习笔记2_centos7远程登陆前的总结
  9. 【HDOJ】3315 My Brute
  10. 一篇男人必看的创业文章。(人活着不能没有钱,但是活着却不能只为了钱)...