解决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 相关文章推荐
一个简单的实现下拉框多选的插件可移植性比较好
May 05 Javascript
jquery文本框中的事件应用以输入邮箱为例
May 06 Javascript
原生js的弹出层且其内的窗口居中
May 14 Javascript
jquery实现侧边弹出的垂直导航
Dec 09 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
Jan 08 Javascript
JS平滑无缝滚动效果的实现代码
May 06 Javascript
AngularJS表单基本操作
Jan 09 Javascript
原生js实现轮播图
Feb 27 Javascript
Node.js pipe实现源码解析
Aug 12 Javascript
JavaScript实现微信号随机切换代码
Mar 09 Javascript
vue-cli项目中使用Mockjs详解
May 14 Javascript
分享8个JavaScript库可更好地处理本地存储
Oct 12 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
星际中一些鲜为人知的详细资料
2020/03/04 星际争霸
PHP引用(&amp;)各种使用方法实例详解
2014/03/20 PHP
php生成静态页面的简单示例
2014/04/17 PHP
PHP使用递归按层级查找数据的方法
2019/11/10 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
JS+css 图片自动缩放自适应大小
2013/08/08 Javascript
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
2015/01/28 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
详解JS-- 浮点数运算处理
2016/11/28 Javascript
JS数字千分位格式化实现方法总结
2016/12/16 Javascript
微信小程序 Toast自定义实例详解
2017/01/20 Javascript
Vue.js手风琴菜单组件开发实例
2017/05/16 Javascript
Angular4 中常用的指令入门总结
2017/06/12 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
浅谈vue.js导入css库(elementUi)的方法
2018/03/09 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
js实现简单进度条效果
2020/03/25 Javascript
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
2017/08/23 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
Python pip安装第三方库实现过程解析
2020/07/09 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
纯css3实现的鼠标悬停动画按钮
2014/12/23 HTML / CSS
打架检讨书100字
2014/01/19 职场文书
大学考试作弊检讨书
2014/01/30 职场文书
模具毕业生推荐信
2014/02/15 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
上诉答辩状范文
2015/05/22 职场文书
2016年“6.26”禁毒宣传月系列活动总结
2016/04/05 职场文书
四年级作文之说明文作文
2019/10/14 职场文书
《家世》读后感:看家训的力量
2019/12/30 职场文书