解决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 相关文章推荐
jQuery 源码分析笔记(3) Deferred机制
Jun 19 Javascript
深入理解javascript中return的作用
Dec 30 Javascript
Js与下拉列表处理问题解决
Feb 13 Javascript
JavaScript中的正则表达式简明总结
Apr 04 Javascript
完美解决IE不支持Data.parse()的问题
Nov 24 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
Nov 10 Javascript
解决Vue不能检测数组或对象变动的问题
Feb 24 Javascript
vue实现2048小游戏功能思路详解
May 09 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
Oct 25 Javascript
小程序实现多个选项卡切换
Jun 19 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
Oct 19 Javascript
Vue 实现可视化拖拽页面编辑器
Feb 01 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
手冲咖啡应该是现代精品咖啡店的必备选项吗?
2021/03/03 冲泡冲煮
php常见的魔术方法详解
2014/12/25 PHP
php中数据库连接方式pdo和mysqli对比分析
2015/02/25 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
2019/11/04 PHP
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
发一个自己用JS写的实用看图工具实现代码
2008/07/26 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
2011/10/16 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
JavaScript中数组成员的添加、删除介绍
2014/12/30 Javascript
Javascript打印局部页面实例
2016/06/21 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
vue 设置proxyTable参数进行代理跨域
2018/04/09 Javascript
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
2018/04/19 Javascript
AJAX在JQuery中的应用详解
2019/01/30 jQuery
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
2019/07/19 Javascript
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
Python调用微信公众平台接口操作示例
2017/07/08 Python
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
使用Python文件读写,自定义分隔符(custom delimiter)
2020/07/05 Python
英国领先的野生鸟类食品供应商:GardenBird
2018/08/09 全球购物
凯蒂·佩里个人女鞋品牌:Katy Perry Collections
2019/04/04 全球购物
Guess荷兰官网:美国服饰品牌
2020/01/22 全球购物
煤矿班组长的职责
2013/12/25 职场文书
党性心得体会
2014/09/03 职场文书
五好家庭申报材料
2014/12/20 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers
索尼ICF-36收音机评测
2022/04/30 无线电