vue数据改变了,视图不更新不刷新问题

描述:在对象中添加一个属性 seen,初始想法使用for循环添加 seen 属性,然后改变这个属性去更新视图,然后发现不行。

解决,使用$set:

this.$set(item, 'seen', false)
代码:
// 请求来的数据,在 res.results 中没有seen这个属性,添加这个属性
this.worklogs = res.results
res.results.forEach(item => {this.$set(item, 'seen', false)
})
// 改变这个属性来控制显示隐藏
showDesc(log) {log.seen = !log.seen
}

对象更改检测

在一个组件实例中,只有在data里初始化的数据才是响应的,Vue不能检测到对象属性的添加或删除,没有在data里声明的属性不是响应的。

Vue不允许在已经创建的实例上动态添加根级响应式属性,但是可以使用$set方法将相应属性添加到嵌套的对象上。

已经声明的属性正常响应的,没有声明的属性虽然值发生了改变,console也能打印出来,但并不能响应到视图上。需要用Vue.set(object, key, value) 或 this.$set(object,key,value) 方法将响应属性添加到嵌套的对象上。

注意:object 必须是在data中已经声明的对象。

// this.form.testB = 'desc' // 无效
this.$set(this.form,'testB ','desc') // 动态添加
// 或者 Vue.set(vm.form,'testB ','desc')

Object.assign方法,向嵌套对象上添加多个属性。object.assign方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,并返回目标对象。

语法:vm.object = Object.assign( { } , vm.object , {a:' 1 ', b:' 2 ' })

注意:object 必须是在data中已经声明的对象。

this.form1 = Object.assign({}, this.form1, {f1:'f1',f2:'f2'})

数组更改问题

vue检测不到变动问题:1、利用索引直接设置一个项;2、修改数组长度。

1、

changeMe(index) {// this.trees[index] = 'xxx' // 无响应this.$set(this.trees, index, 'xxx') // 有响应// this.trees.splice(index, 1, 'xxx') // 有响应
}
2、
// 改变数组长度
// this.trees.length = 2 // 无响应
this.trees.splice(2) // 有响应

感谢作者:

https://www.cnblogs.com/YuKiee/p/9681151.html

vue数据改变了,视图不更新不刷新问题相关推荐

  1. Vue数组改变,视图不更新解决方案

    列表渲染 - Vue.jsVue.js - The Progressive JavaScript Frameworkhttps://cn.vuejs.org/v2/guide/list.html#%E ...

  2. safair中vue修改了数据,但是视图没有更新解决方案

    使用vuex,也适用了splice来改数据, 修改了评论的数据,但是视图没有更新. state.tabContainer.splice(index, 1, {info: info}); 查看dom元素 ...

  3. Vue中的Diff算法 patch函数-简单Diff算法-双端Diff算法-快速Diff算法-当数据发生改变,视图如何更新?

    文章目录 Vue中的Diff算法 概述 前置知识 patch方法 简单Diff算法 总结 双端Diff算法 --vue2 快速Diff算法 --vue3 vue2和vue3 Diff算法的区别 当数据 ...

  4. vue数组中数据变化但是视图没有更新解决方案

    vue数组中数据变化但是视图没有更新解决方案 参考文章: (1)vue数组中数据变化但是视图没有更新解决方案 (2)https://www.cnblogs.com/sufubo/p/6906261.h ...

  5. Vue数据改变视图不更新的问题

    首先说下在什么情况下会出现这种情况以及解决方案 在vue2中用数组下标修改值时或者新增对象Key值时 这样vue的devsrve函数是监听不到数据的变化的所以就会导致数据更新视图未更新 1.数组利用下 ...

  6. Angular URL地址参数改变,视图不更新的解决办法(监听URL变化,重新加载数据方法)

    import { ActivatedRoute,Router,NavigationEnd } from '@angular/router'; //钩子(组件组装完成之后调用的方法,仅调用一次)ngAf ...

  7. vue 数据改变页面没有实时渲染(不是一般的情况, 如果一般情况无法解决可能是这个原因)

    css3里面的渐变色属性 background-image: linear-gradient(121deg, rgba(36, 237, 255, 1) 0%, rgba(24, 102, 231, ...

  8. vue数据改变渲染问题_解决Vue中页面成功渲染数据undefined的问题

    前言 这个标题不太好取. 本文需要下面的知识:https://zhuanlan.zhihu.com/p/260811233​zhuanlan.zhihu.com 问题描述 我最近的一个功能需求是通过a ...

  9. vue数组改变但是页面不更新的解决方案

    分类 1.由于javascript的限制,某些情况vue会监听不到数组的变化,例如:items[index] = newitem 2.或者是数组结构过于复杂和深度过深,也可能导致更新出现问题. 解决方 ...

最新文章

  1. Windows CE 6.0 安装顺序
  2. Use Excel Pivot Table as a BI tool
  3. 产业链布局优势明显,三星开启全新移动智能体验新时代
  4. 鄂尔多斯借贷迷局:1亿存款被冻结3年无法拿回
  5. Taro+react开发(16)--跳转拿参
  6. 一款强大的 Kubernetes API 流量查看神器
  7. hdu 1856 求集合里元素的个数 输出最大的个数是多少
  8. 安装系统出现Winload.exe错误0xc000000e解决方法
  9. C51单片机流水灯C代码
  10. 让css的字体加粗后不影响宽度变化与content和attr()问题
  11. python判断ip是否可以ping通
  12. linux skyeye,用skyeye运行uClinux内核
  13. 手机向服务器发信息吗,给手机发短信
  14. 页游终端服务器,页游定制高防服务器秒解封服务器
  15. mysql virt虚拟内存_Java进程VIRT虚拟内存
  16. bootstrap表格标题Caption位于表格下方的原因
  17. U-boot简介及常用命令说明
  18. Jquery版本对IE浏览器的支持
  19. U盘内文件变为快捷方式怎么办?【一招解决】
  20. python-探索性数据分析-足球赛事数据集

热门文章

  1. 应用SELinux中的目标策略限制进程运行
  2. 关于onload的事件权柄以及踩过的坑
  3. C语言——判断是该年的第几天
  4. OJ1077: 字符串加密(C语言)
  5. OJ1039: n个数求和(C语言for循环)
  6. 靶形数独(洛谷-P1074)
  7. 输出前k大的数(信息学奥赛一本通-T1235)
  8. 直方图(信息学奥赛一本通-T1115)
  9. 信息学奥赛C++语言:有规律的数列
  10. 信息学奥赛C++语言:满足条件的数累加