为了提升循环的性能,我们会给循环加上一个唯一的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. Tcpdump命令抓包详细分析

    1 起因 前段时间,一直在调线上的一个问题:线上应用接受POST请求,请求body中的参数获取不全,存在丢失的状况.这个问题是偶发性的,大概发生的几率为5%-10%左右,这个概率已经相当高了.在排查问 ...

  2. 傻瓜式Spring教学第二课

    什么是依赖注入 先说什么是依赖 如下: class A{ B b; } class B{ } 则称A依赖B. 依赖:A的某些业务逻辑需要B的参与,如果不对A中的参数b进行实例化,那么A中的某些业务逻辑 ...

  3. 问题:modbus_tk开发中遇到[Errno 98] Address already in use (已解决)

    案例: from modbus_tk import modbus_tcp,defines import time s = modbus_tcp.TcpServer(port=5300) def mai ...

  4. thinkPHP5.0表单令牌使用

    表单令牌的作用:避免表单的重复提交(如在tp5提交成功等待跳转页面刷新页面会在次提交表单) 原理:在初始化表单时,生成一个session标识‘token’,提交表单时将这个token一起提交过去,然后 ...

  5. Maven使用之packing篇

    项目的打包类型:pom.jar.war 项目中一般使用maven进行模块管理,每个模块下对应都有一个pom文件,pom文件中维护了各模块之间的依赖和继承关系.项目模块化可以将通用的部分抽离出来,方便重 ...

  6. json处理第二篇:利用fastjson处理json

    fastjson是阿里开源的工具包,主要是利用com.alibaba.fastjson.JSON及其两个子类com.alibaba.fastjson.JSONObject.com.alibaba.fa ...

  7. hadoop和spark比较

    http://blog.51cto.com/13943588/2165946 3.hadoop和spark的都是并行计算,那么他们有什么相同和区别?  两者都是用mr模型来进行并行计算,hadoop的 ...

  8. SuperSpider(简书爬虫JAVA版)

    * 建站数据SuperSpider(简书)* 本项目目的:* 为练习web开发提供相关的数据:* 主要数据包括:* 简书热门专题模块信息.对应模块下的热门文章.* 文章的详细信息.作者信息.* 评论区 ...

  9. 如何才能够写出优美的C代码呢?

    转载自http://developer.51cto.com/art/201601/503802.htm 面向对象的语言更接近人的思维方式,而且在很大程度上降低了代码的复杂性,同时提高了代码的可读性和可 ...

  10. pat06-图5. 旅游规划(25)

    06-图5. 旅游规划(25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该 ...