解决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代码优化技巧之通俗版(减少js体积)
Dec 23 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
Dec 13 Javascript
jQuery实现DIV层收缩展开的方法
Feb 27 Javascript
用NODE.JS中的流编写工具是要注意的事项
Mar 01 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
May 25 Javascript
使用ionic播放轮询广告的实现方法(必看)
Apr 24 Javascript
jQuery Validate插件ajax方式验证输入值的实例
Dec 21 jQuery
jquery radio 动态控制选中失效问题的解决方法
Feb 28 jQuery
浅析Angular 实现一个repeat指令的方法
Jul 21 Javascript
JS中比较两个Object数组是否相等方法实例
Nov 11 Javascript
vue父子模板传值问题解决方法案例分析
Feb 26 Javascript
基于angular实现树形二级表格
Oct 16 Javascript
解决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
php获得文件扩展名三法
2006/11/25 PHP
批量修改RAR文件注释的php代码
2010/11/20 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
javascript类型转换使用方法
2014/02/08 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
提交按钮的name='submit'引起的js失效问题及原因
2015/02/25 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
浅析Angular2子模块以及异步加载
2017/04/24 Javascript
SVG动画vivus.js库使用小结(实例代码)
2017/09/14 Javascript
Three.js加载外部模型的教程详解
2017/11/10 Javascript
微信小程序实现城市列表选择
2018/06/05 Javascript
vue 点击按钮增加一行的方法
2018/09/07 Javascript
在vue中安装使用vux的教程详解
2018/09/16 Javascript
微信小程序实现简单跑马灯效果
2020/05/26 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
js实现简单图片拖拽效果
2021/02/22 Javascript
简单的python后台管理程序
2017/04/13 Python
Python numpy生成矩阵、串联矩阵代码分享
2017/12/04 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
2020/01/08 Python
Python flask路由间传递变量实例详解
2020/06/03 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
广州御银科技股份有限公司试卷(C++)
2016/11/04 面试题
经济管理专业毕业生推荐信
2013/11/11 职场文书
学校四风对照检查材料
2014/08/28 职场文书
2015出纳试用期工作总结
2014/12/12 职场文书
检讨书范文500字
2015/01/28 职场文书
教你怎么用Python实现GIF动图的提取及合成
2021/06/15 Python
深入理解go缓存库freecache的使用
2022/02/15 Golang
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电