举个案例:循环data中的list的值在div中,并显示相应的index值。

关于数组的循环:

//显示效果如下图:

//一般的列表渲染最好带一个key值,要把key值设置为唯一值的话,可以选择index。但在频繁操作DOM元素相对应的数据的时候,它还是有点浪费性能,可能让Vue没法充分复用DOM节点,所以不太建议用index来做key值

//所以一般的项目中的后端会传递过来一些数据,这些数据可以把它作为key值来使用(一般会携带一个后端或数据库相关的一个唯一的数据条目标识符,例如:id)

//修改如下图所示:

//把key值设置成(item.id)既是唯一的,同时又不是index下标,就能保证key值的使用最终是正确的,性能上最高

//在使用key值的时候,每个循环项最好带一个key值,提高性能;为了让key值达到最优效果,就要把key设为唯一的,尽量不用index下标作为key值

===============================================================

接下来讲解一下:如何动态的往列表里添加内容

//如上,运用数组中的push()方法,当往数组里添加内容的时候页面会自动的响应出增加的内容

//如上,当直接用下标的方法来添加数组内容的时候,页面上并没有把添加的数据显示出来。然后在控制台中输入vm.list来查看数据的时候,发现里面是有数据的添加的,只是没有显示在页面上而已

//总结:当我们去尝试更改数组里面的内容的时候,不能直接通过下标的形式来改变数组;只能通过Vue提供的几个数组变异方法来操作数组,才能够实现数据变化,页面也跟着变化

  Vue中一共提供了7种数组的变异方法:pop(把数组最后一项删除掉)、push(往数组里增加一条)、shift(删除数组里的第一项)、unshif(往数组里的第一项增加内容)、splice(数组的截取/操作方法)、sort(对数组进行排序)、reverse(对数组进行取反)

 

//接下来讲解一下:把页面上的数据George修改为Rose

方法一:改变数组的内容

//用splice()的方法来改变Gerorge,表达式中写入(1,1,{id:'001',text:'Rose'})即可。  表达式中第一个1表示数组中的第一项(即list[1]),第二个1表示删除一条内容,{id:'001',text:'Rose'}表示往里增加一条内容

方法二:改变数组中的数据引用

//改变数据上新的引用,直接把数据的第二项(即list[1]的text直接修改)

若要在div外再循环一个span标签,可以用template方法来实现效果,代码如下图:

//显示效果如下:  div和span标签都循环了

//用template模板占位符可以去包裹一些元素,但是在循环的过程中,他并不会真正的被渲染到页面上

==================================================

关于对象的循环:

//显示效果如下:

//如上,key值指向的就是这个对象中的键名(例:name),而item值指向的就是这个对象的键值(例:‘George’),index值指向的就是它在对象中的第几个位置

===============================================================

接下来讲解一下:如何动态的往列表里添加内容

//如上,当改userInfo的name值时,数据变了,页面也跟着改变了。而当你添加一个新的数据时,数据有发生变化,但是页面上并没有显示出来效果。所以说,当在遍历对象的时候,直接动态的往对象里面加值是不好用的。但是如果硬要是往里面添加的话呢,就类似于数组一样,直接把对象的引用赋值进去改变就行了(会比较麻烦)

//操作如下:

==================================================

 对象中:

还可以采取另外一种方法来实现:  即Vue.set()方法!

//在控制台中用set方法也可以实现在对象中添加数据。如:Vue.set(vm.userInfo,'address','Beijing'),这段代码的编写,就可以实现在页面和对象中添加一个新的数据address    显示效果如下图:

//然而,Vue.set()方法不仅可以这样来使用,还可以用Vue实例的方法来使用  (它既是一个Vue中的全局方法,同时也是Vue中的实例方法)

//用vm.$set(vm.userInfo,'address','Beijing')的实例方法也可以照样实现如上效果,演示效果如下图:

===============================================================

数组中:

也可以采取另外一种方法来实现:  即Vue.set()方法!

稍微更改一下之前的代码,简化一下:

然后在控制台上进行set方法的使用,如下图操作:

//如上,可以发现数组的set方法也是像对象的使用一样,而且同样都可以达到效果!其中(vm.userInfo,1,5)的“1”指的是数组的第二项(即userInfo[1]),“5”指的是需要修改的内容。

3-7 Vue中的列表渲染的更多相关文章

  1. 理解Vue中的Render渲染函数

    理解Vue中的Render渲染函数 VUE一般使用template来创建HTML,然后在有的时候,我们需要使用javascript来创建html,这时候我们需要使用render函数.比如如下我想要实现 ...

  2. 3-6 Vue中的条件渲染

    本次案例讲解:v-if,v-show,v-else,v-else-if和key值的相关用法!!! v-if指令: //通过一个(v-if)指令 ,可以结合js表达式的返回值,决定一个标签是否在页面上展 ...

  3. vue中的页面渲染方案

    一.模板渲染 <div id="J_render_app"> <ul v-if="items.length"> <li v-for ...

  4. vue中在页面渲染完之后获取元素(否则动态渲染的元素获取不到)

    两种方法: 方法一: 使用$nextTick,在异步获得数据之后再获取元素: 方法二: 在then之后再获取该元素: 问题2:vue中监听改变数组的方法: let idx =; this.listIn ...

  5. Vue学习之--------列表渲染、v-for中key的原理、列表过滤的实现(2022/7/13)

    文章目录 1.基本列表 1.1 基本知识 1.2 代码实例 1.3 测试效果 2.key的原理 2.1基本知识 2.2 代码实例 2.3 测试效果 2.4 原理图解 3.列表过滤 3.1 代码实例 3 ...

  6. vue中异步请求渲染问题(swiper不轮播)(在开发过程中遇到过什么问题、踩过的坑)

    问题描述: 用vue封装一个swiper组件的时候,发现轮播图不能轮播了. 原因: 异步请求的时间远大于生命周期执行的时间,mounted初始化DOM时数据未返回,渲染数据是空数组,导致轮播图的容器层 ...

  7. vue 中后台 列表的增删改查同一解决方案

    查看 & 查询 常⻅业务列表⻚都是由 搜索栏 和 数据列表 组成. 其中: 搜索栏包含 搜索条件 . 新增 . 批量xx . 导出 等对 数据列表 全局操作功能项. 数据列表包含 分⻚ 和每条 ...

  8. 好客租房16-jsx中的列表渲染

    如果要渲染一组数组 应该使用数组的map方法 注意:渲染列表时候添加key属性 key属性的值要保持唯一 原则:map()遍历谁 就给谁添加key属性 尽量避免索引号作为key //导入react i ...

  9. vue中的列表项删除操作

    <script> Vue({ data: { orders: [] }, created() { $.get( { url: 'orders', dataType: 'json' }) . ...

随机推荐

  1. Finance公式说明

    公式说明 代码 说明 Y 期末余额 JY 期末借方余额 DY 期末贷方余额 C 期初余额 JC 期初借方余额 DC 期初贷方余额 SY 本期实际发生额 SL 利润表本年实际发生额 SY 期末余额 SJ ...

  2. tomcat 请求处理流程分析(基于nio)

    在这里我先简单的说下bio和nio的区别 这里我以电话客服的情况来解释 bio 一个客户对应一个客服, 假如客户比较麻烦,中途不挂电话,或者去做其他事情了,而客服资源会被一直占用 导致的后果是系统处理 ...

  3. get通配符

    这篇文章是在上一篇常用正则表达式(合) https://blog.csdn.net/yeyeye200/article/details/86186889 基础上的延伸:关于通配符的使用~ 一开始get ...

  4. layer.tips属性

    layer.tips(新加的内容,'选择节点',{time: 0, area: ['20%', '20%'], skin: 'layui-layer-rim', tips: [3, '#ffffff' ...

  5. Python3创建项目时创建了一个叫做“keyword"的包,运行项目时报ImportError: cannot import name 'iskeyword'错误

    导致该问题的原因为在Python3中keyword是python的关键字包,所以在给包命名时应避免使用关键字进行命名.解决方法,将keword包名称修改为'keywords'就可以了.

  6. CODEFORCES ROUND #761 ANALYSES BY TEAM:RED & BLACK

    A. Dasha and Stairs Problems: 一个按照1,2,3……编号的楼梯,给定踩过的编号为奇数奇数和偶数的楼梯数量a和b,问是否可以有区间[l, r]符合奇数编号有a个,偶数编号有 ...

  7. Pyinstaller打包django

    偶有特殊要求可能需要将django程序打包成exe可执行文件,方便在电脑直接点击运行.这里用的是打包python代码的常用库Pyinstaller. 虽然用Pyinstaller支持打包Django, ...

  8. C++动态库的几点认识

    1.动态库也有lib文件,称为导入库,一般大小只有几k: 2.动态库有静态调用和动态调用两种方式: 静态调用:使用.h和.lib文件 动态调用: 先LoadLibrary,再GetProcAddres ...

  9. 设置tableView的组的头视图的高度

    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 1 ...

  10. 信号(signal)

    1.信号本质 1)信号是一种软件中断,是在软件层次上对中断的模拟: 2).在日常生活中也有很多信号,比如常见的红绿灯信号,我们看见红灯就停下,linux中的信号也是类似的,它提供一种机制告诉某个进程在 ...