为了提升循环的性能,我们会给循环加上一个唯一的key值,这个key值一定是唯一的
<div id='root'>
  <div v-for='(item,index) of list' :key='index'>
    {{item}}--{{index}}
  </div>
</div> <script>
var vm = new Vue({
  el:'#root',
  data:{
    list:['hello','dell','nice','to','meet','you']
  }
})
</script>
我们一般把index下标作为唯一的key值,完全可以,但是不推荐这样使用index,因为这样是使用index作为key值,在频繁操作dom元素数据的时候,其实它还是比较费性能,他可能让vue没法充分的复用dom节点,所以不建议使用index作为key值,那不使用index作为key值,用什么作为key值呢
一般这个数据不是前端写死的,是后端返回的,后端返回的时候一般会带一个id类似的字段,这个值是这条数据的唯一标识
<div id='root'>
  <div v-for='(item,index) of list' :key='item.id'>
    {{item.text}}--{{index}}
  </div>
</div> <script>
var vm = new Vue({
  el:'#root',
  data:{
    list:[{
      id:'01',
      text:'hello'
    },{
      id:'02',
      text:'nice'
    },{
      id:'03',
      text:'to'
    },{
      id:'04',
      text:'meet'
    },{
      id:'05',
      text:'you'
    }]
  }
})
</script>

这样性能最高

改变数组
当控制台输入vm.list[4]='hha',发现页面没有更新,但确实添加进去了,这是vue里面不能通过数组下标的形势改变数组,只能通过vue提供的方法改变数组,vue中一共提供了7个便利方法来帮助我们去操作数组
pop():把数组最后一项删除掉
push():从数组最后添加一项
shift():把数组的第一项删除掉
unshift():给数组添加第一项
splice():做一些数组的截取
sort():对数组进行拍素
reverse():对数组进行取反
现在要去改变数组对第二项内容,那么操作方法是什么呢,只能运用上面的方式
1、先删除第二项,再在该位置添加一项
vm.list.splice(1,1,{id:'333',text:'dell2'})
2、去改变数据的引用,将数组list指向另外一个数组,这样也可以
vm.list=['hello','dell1','lee']
循环对象
<div id='root'>
  <div v-for='(item,key,index) of userInfo'>
    {{item}}--{{key}}--{{index}}
  </div>
</div> <script>
var vm = new Vue({
  el:'#root',
  data:{
    userInfo:{
      name:'Dell',
      age:28,
      gender:'male',
      salary:'secret'
    }
  }
})
</script> ==>
Dell--name--0
28--age--1
male--gender--2
secret--salary--3

改变对象的内容,如果要改变name的值,直接

vm.userInfo.name='dell1'
如果要给对象添加一个值
vm.userInfo.address='beijign'

这样是不行的,要怎么做呢,还是跟数组一样,用改变引用的方式

vm.userInfo={
  name:'Dell',
  age:28,
  gender:'male',
  salary:'secret',
  address:'beijing'
}

v-for的深层用法的更多相关文章

  1. C语言中 v...printf类函数的用法

    C语言的自学渐渐接近尾声,今天学到了标准库中的stdarg.h头,里面关联了stdio.h头里面的一类函数:v...printf函数,里面举的例子看了之后还是不太明白,google了一下依旧不是很懂, ...

  2. vuejs中v-if的深层用法v-else,v-else-if,key

    <div id='root'> <div v-if='show'>helle world</div> <button @click='handleClick' ...

  3. 关于PHP面向对象中—类的定义与对象的实例化操作以及构造、析构函数的特殊用法

    类的定义与对象的实例化操作 <?php //类里面的成员是属于对象的class Hero{    public $name;//成员变量    //成员属性(存在于强类型语言中)    prot ...

  4. C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法

    每次忘记都去查,真难啊 /* C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法 */ /* vector常用用法 */ //头文件 #i ...

  5. Python之路【第二篇】python基础 之基本数据类型

    运算符 1.算数运算: 2.比较运算: 3.赋值运算: 4.逻辑运算: 5.成员运算: name = "yehaoran " # in 判断ye是否在name里面 在的话返回ok ...

  6. python基础-基本数据类型

    一. 运算符 1.算数运算: ps: 示例1: python2.7示例 #!/usr/bin/env python # -*- coding:utf-8 -*- #Author: nulige #算数 ...

  7. dotfuscator使用方法

    dotfuscator如何对.net程序进行混淆保护对于程序代码的保护,网上有很多资料,有的说混淆,有的说加密,我比较支持混淆的方法,这样可以让反编译劳工,头晕一阵子,哈哈开玩笑.对于加密如果不是不得 ...

  8. Delphi重载,覆盖,多态

    一.override 重载 type TFigure = class procedure Draw; virtual;//(我的理解是)父类中可以使用父类的,子类中使用子类的.与“四”是有区别的. e ...

  9. 给进程分配cpu核心

    新负责的程序采用生产者和消费者的模式,生产者的速度非常快,数据几乎都在内存里,处理起来很快.而消费者要频繁的I/O.所以打算给生产者和消费者分配不一样的核心. 生产者只需要一个核心就够了,其余分配给消 ...

随机推荐

  1. 6.SpringMVC2

    1.视图解析 当客户端发出请求后,交由SpringMVC的DispatcherServlet处理,接着Spring会分析看哪一个HandlerMapping定义的所有请求映射中对该请求的最合理的映射, ...

  2. js中url有中文的转码方法

    转载:https://www.cnblogs.com/chiangfai/p/6073000.html

  3. NETCore 调试

    https://www.cnblogs.com/MingQiu/p/8227644.html https://www.cnblogs.com/shumin/p/9967854.html 前言 core ...

  4. my13_mysql xtrabackup备份的时间点

    备份原理 xtrabackup的备份时间点是备份结束时刻,记录在xtrabackup_binlog_info 文件中:如果后续需要通过binlog追加操作,则该时间点是起点. 备份开始后,xtrabc ...

  5. Redis Intro - Dict

    https://segmentfault.com/a/1190000004850844

  6. DRF-->1 序列化组件的使用和接口设计---get

    定义序列化器(本质就是一个类),一般包括模型类的字段,有自己的字段类型规则.实现了序列化器后,就可以创建序列化对象以及查询集进行序列化操作,通过序列化对象.data来获取数据(不用自己构造字典,再返回 ...

  7. Easy Touch 摇感控制人物移动

    Easy Touch 摇感控制人物移动 public class joystick : MonoBehaviour { public float Speed;             //定义速度 p ...

  8. (转)Rsync命令详解

    Rsync命令详解 原文:http://blog.51cto.com/irow10/1826249 说明: Rsync是linux/Unix文件同步和传送工具.用于替代rcp的一个工具,rsync可以 ...

  9. vue进阶 --- 实例演示

    这篇博客将通过一个实例来对vue构建项目的过程有一个了解. 主要用到的知识点如下所示: vue-router 2.0路由配置 router-view 和 router-link的使用 transiti ...

  10. 用Jmeter 测试接口--需要登录怎么办?

    一.试用场景---当你测试的接口 需要登录,然后 你又不知道怎么让这测这个接口前登录?这篇文章写得是 用静态的Token 值,来测试需要登录的接口 二.步骤 1  首相用Jmeter   将要测试的接 ...