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

这样性能最高

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

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

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

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

  1. vm.userInfo={
  2.   name:'Dell',
  3.   age:28,
  4.   gender:'male',
  5.   salary:'secret',
  6.   address:'beijing'
  7. }

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. python3 杂记

    python3 杂记 test001 --test001.py       ( from test2.test002 import * def test1(): print('1') if __nam ...

  2. spring boot 入参方式

    方式: 1).直接写,如public User index2(String name) 2).@RequestParam 与直接写的区别是,可以写默认值. 3).@RequestBody 因为传入的是 ...

  3. formValidation校验

    引用: https://www.cnblogs.com/aliger/p/3898216.html

  4. Ztree 默认展开二级菜单

    在初始加载树形控件的时候调用zTree的expandNode (node, expandFlag, sonSign, focus, callbackFlag)方法 node:树形节点 expandFl ...

  5. CentOS下NFS服务器配置教程

    说明: NFS服务器: 操作系统:CentOS 5.5 IP:192.168.21.160 nfs网络文件服务器共享目录:/data/osyunwei 目录所有者:www(说明:www为nginx运行 ...

  6. VS Code Plugins And Configuration

    VS Code插件 vscode-icons: 显示文件类型的图标 project manager: 管理项目, 项目的保存加载与切换 beautify: 控制缩进 code runner: 执行代码 ...

  7. HDU 5340——Three Palindromes——————【manacher处理回文串】

    Three Palindromes Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  8. 关于微信小程序登录授权

    小程序的API接口文档写的很清晰,现在理一遍思路. 前端通过wx.login()获取code ,把code发给后台,后台返回openid,再获取用户的授权信息(这里先判断是否授权,授权过的就直接进入小 ...

  9. Day6 下(

    T1 模拟,80? #include<iostream> #include<cstring> #include<queue> #include<algorit ...

  10. AngularJS 学习(-)Hello world

    早期的AngularJS使我们的前端开发模式发生很大的变化,基使用MVC. Model - html 模板:Controller - js脚本; Model 来自于Web API 或其他Service ...