为了提升循环的性能,我们会给循环加上一个唯一的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. 风险识别工具 - 影响图(Influence Diagram)

    原文地址:http://blog.csdn.net/jameszhou/archive/2007/06/24/1664494.aspx PMBOK(2004 3rd 英) P248关于风险识别的图形技 ...

  2. VBS 学习

    VBS其他功能 获取系统用户名 DimWshNetwork Set WshNetwork =CreateObject("WScript.Network") strTaccount ...

  3. [转]jQuery TextBox Water Mark with asp.net

    本文转自:http://naspinski.net/post/jQuery-TextBox-Water-Mark-with-aspnet.aspx I stole majority of this c ...

  4. mysql连接查看

    1:查看当前连接 mysql> show status like 'Threads%'; +-------------------+-------+ | Variable_name     | ...

  5. 位于XDB的服务器localhost要求用户名和密码,端口占用

    问题现象: 从MyEclipse启动部署在tomcat上的web程序后,出现如下问题: 然后访问tomcat主页(http://localhost:8080/),弹出如下对话框: 问题原因: 机器上安 ...

  6. GitKraken使用教程-基础部分(1)

    1. 首次打开程序 第一次打开GitKraken程序时, GitKraken会提示需要登陆,可以用github.com的账号登陆,或者用邮箱创建账号登陆(如图 1‑1). 图 1‑1登陆帐户界面 登陆 ...

  7. Java的ThreadContext类加载器

    疑惑 以前在看源码的时候,总是会遇到框架里的代码使用Thread.currentThread.getContextClassLoader()获取当前线程的Context类加载器,通过这个Context ...

  8. [HZOI 2015]复仇的序幕曲

    [题目描述] 你还梦不梦痛不痛,回忆这么重你怎么背得动 ----序言 当年的战火硝烟已经渐渐远去,可仇恨却在阿凯蒂王子的心中越来越深 他的叔父三年前谋权篡位,逼宫杀死了他的父王,用铁血手腕平定了国内所 ...

  9. hql语句cast用法

    hql中cast为转换函数 cast(a as b);a是要转换的数据,b是目标类型(不是数据库类型名,是hibernate类型名:比如目标类型是varchar,必须写string) eg:selec ...

  10. C#之Clone

    因为类的实例是引用类型,要想用原有的类中的实例的数据的话,既要想创建原对象的一个副本的话,只能用clone方法. Clone方法分为深clone和浅clone 在C#中提供了浅clone的方法,即为M ...