为了提升循环的性能,我们会给循环加上一个唯一的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. mc04_IntelliJ IDEA常用设置

    字体设置 File --> Settings --> Font 项目编码设置 File --> Settings --> File Encodings 项目依赖 即一个项目引用 ...

  2. Yii2 前台控制器访问权限控制

    class BaseController extends Controller { public function behaviors() { return [ 'access' => [ 'c ...

  3. 3-----Scrapy框架的命令行详解

    创建爬虫项目 scrapy startproject 项目名 例子如下: E:\crawler>scrapy startproject test1 New Scrapy project 'tes ...

  4. Hbase 表操作

    1. list 操作 2. 创建table column family, 3. 插入数据: put 'user' 3. 检索数据: scan table

  5. vue中组件传值方式汇总

    在应用复杂时,推荐使用vue官网推荐的vuex,以下讨论简单SPA中的组件间传值. 一.路由传值 路由对象如下图所示: 在跳转页面的时候,在js代码中的操作如下,在标签中使用<router-li ...

  6. CAD安装失败怎样卸载CAD 2010?错误提示某些产品无法安装

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  7. 性能测试工具LoadRunner25-LR之常用性能指标计算公式

    1.吞吐量计算公式 定义:指单位时间内系统处理用户的请求数 从业务角度看,吞吐量可以用:请求数/秒.页面数/秒.人数/天或处理业务数/小时等单位来衡量. 从网络角度看,吞吐量可以用:字节/秒来衡量 对 ...

  8. [转]创建一个JavaScript弹出DIV窗口层的效果

    本文转自:http://www.soso.io/article/23698.html <!doctype html> <html lang="en"> &l ...

  9. python 自动安装工具 setuptools(easy_install) 的使用

    1.下载安装 python 安装工具,下载地址:http://pypi.python.org/pypi/setuptools ,可以找到正确的版本进行下载. 2.解压缩后双击 ez_setup.py ...

  10. Murano Weekly Meeting 2015.09.29

    Meeting time: 2015.September.29th 1:00~2:00 Chairperson:  Serg Melikyan, PTL from Mirantis Meeting s ...