解决vue中修改了数据但视图无法更新的情况


Posted in Javascript onAugust 27, 2018

我们有时候常碰到vue中明明修改了数据,但是视图无法更新,因此我总结了一点点碰到此类的情况:

1、v-for遍历的数组,当数组内容使用的是arr[0].xx =xx更改数据,vue无法监测到

数组数据变动:我们使用某些方法操作数组,变动数据时,有些方法无法被vue监测,有些可以

Vue包装了数个数组操作函数,使用这些方法操作的数组去,其数据变动时会被vue监测:

push()

pop()

shift()

unshift()

splice()

sort()

reverse()

vue2.0还增加个方法可以观测Vue.set(items, indexOfItem, newValue)

filter(), concat(), slice() 。这些不会改变原始数组,但总是返回一个新数组。当使用非变异方法时,可以用新数组替换旧数组

Vue 不能检测以下变动的数组:

① 当你利用索引直接设置一个项时,vm.items[indexOfItem] = newValue

② 当你修改数组的长度时,例如: vm.items.length = newLength

话不多说,上代码,并且附上效果图:

<body>
  <div id="app">
   <ul>
    <li v-for="(item,index) in gc">
     <span>{{item.name}}-{{index}}</span>
     <span>{{item.age}}-{{index}}</span>
    </li>
   </ul>
   <button @click="add">click</button>
  </div>
  <script>
  new Vue({
   el:'#app',
   data:{
    gc:[
     {name:'zhangsan',age:10},
     {name:'lisi',age:21},
     {name:'wangwu',age:22},
     {name:'wangwu',age:22}
    ]
   },methods:{
    // 当点击事件触发时候会修改掉gc[0]的值为lisi,但是视图不会发生变化
    add(){
     this.gc[0] ={name:'lisi',age:22} 
    }
   }
  })
  </script> 
</body>

解决vue中修改了数据但视图无法更新的情况

解决vue中修改了数据但视图无法更新的情况

以上Vue 不能检测数据变动的数组的2种方式解决办法

将代码中的add()方法改为:

add(){
  // this.gc[0] ={name:'lisi',age:22} //这样直接修改不能被vue监听到
  Vue.set(this.gc,0,{name:'lisi',age:22}) //这样就能被vue监控到,更新视图    
 }

解决vue中修改了数据但视图无法更新的情况

以上这篇解决vue中修改了数据但视图无法更新的情况就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
一些技巧性实用js代码小结
Oct 14 Javascript
Javascript中Eval函数的使用
Mar 23 Javascript
jquery监听div内容的变化具体实现思路
Nov 04 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
Dec 23 Javascript
JavaScript获得url所有参数键值表的方法
Mar 21 Javascript
任意Json转成无序列表的方法示例
Dec 09 Javascript
vue2.0.js的多级联动选择器实现方法
Feb 09 Javascript
JavaScript禁用右键单击优缺点分析
Jan 20 Javascript
记一次vue去除#问题处理经过小结
Jan 24 Javascript
layui动态绑定事件的方法
Sep 20 Javascript
js实现拖拽元素选择和删除
Aug 25 Javascript
vue中三级导航的菜单权限控制
Mar 31 Vue.js
解决vue接口数据赋值给data没有反应的问题
Aug 27 #Javascript
vue 修改 data 数据问题并实时显示的方法
Aug 27 #Javascript
Node.js连接Sql Server 2008及数据层封装详解
Aug 27 #Javascript
解决vue中修改export default中脚本报一大堆错的问题
Aug 27 #Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
Aug 27 #Javascript
JS常见构造模式实例对比分析
Aug 27 #Javascript
Vue.js图片预览插件使用详解
Aug 27 #Javascript
You might like
PHP4之COOKIE支持详解
2006/10/09 PHP
PHP 数组实例说明
2008/08/18 PHP
php数据入库前清理 注意php intval与mysql的int取值范围不同
2010/12/12 PHP
php新浪微博登录接口用法实例
2014/12/23 PHP
Symfony数据校验方法实例分析
2015/01/26 PHP
php把大写命名转换成下划线分割命名
2015/04/27 PHP
php写入、删除与复制文件的方法
2015/06/20 PHP
网页自动刷新,不产生嗒嗒声的一个解决方法
2007/03/27 Javascript
jquery 表格分页等操作实现代码(pagedown,pageup)
2010/04/11 Javascript
javascript中将Object转换为String函数代码 (json str)
2012/04/29 Javascript
浅谈Unicode与JavaScript的发展史
2015/01/19 Javascript
原生js实现移动端瀑布流式代码示例
2015/12/18 Javascript
JavaScript实现时钟滴答声效果
2017/01/29 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
js中forEach,for in,for of循环的用法示例小结
2020/03/14 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
Python远程桌面协议RDPY安装使用介绍
2015/04/15 Python
从源码解析Python的Flask框架中request对象的用法
2016/06/02 Python
python中import学习备忘笔记
2017/01/24 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
Python基于滑动平均思想实现缺失数据填充的方法
2019/02/21 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
python创建n行m列数组示例
2019/12/02 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
2021/02/26 Python
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
adidas马来西亚官网:adidas MY
2020/09/12 全球购物
物业管理个人自我评价
2013/11/08 职场文书
总经理职责范文
2013/11/08 职场文书
计生办班子群众路线教育实践活动个人对照检查材料思想汇报
2014/10/04 职场文书
公司庆典主持词
2015/07/04 职场文书
2015年校本培训工作总结
2015/07/24 职场文书