关于vue中watch检测到不到对象属性的变化的解决方法


Posted in Javascript onFebruary 08, 2018

前言

在vue开发的过程中发现一个问题:改变vue.$data中对象的属性,watch是观测不到变化,但其实对象的属性是有变化的。这……,有点难以置信!

正文

<template>
 <div>
  <dl>name: {{option.name}}</dl>
  <dl>age: {{option.age}}</dl>
  <dl>
   <button @click="updateAgeTo25">update age with 25</button>
  </dl>
 </div>
</template>

<script>
export default {
 data () {
  return {
   option: {
    name: "isaac",
    age: 24
   }
  }
 },
 watch: {
  option(val) {
   console.log(val)
  }
 },
 methods: {
  updateAgeTo25() {
   this.option.age = 25
  }
 }
}
</script>

关于vue中watch检测到不到对象属性的变化的解决方法

关于vue中watch检测到不到对象属性的变化的解决方法

如结果所示,option.age已经更新,但是watch中的option函数并没有被触发。

vue的watch钩子会那么鸡肋?我是不信的了。

深层watch

...
 watch: {
  option: {
   handler(newVal) {
    console.log(newVal);
   },
   deep: true,
   immediate: true
  }
 },
 ...

需要深层watch就需要开启deep属性

关于vue中watch检测到不到对象属性的变化的解决方法

关于vue中watch检测到不到对象属性的变化的解决方法

如结果所示。

另外,你会发现,在age没有变化前也是有打印出option,这是因为开启immediate属性,设定为true,

该回调将会在侦听开始之后被立即调用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery之浮动窗口实现代码(两种方法)
Sep 08 Javascript
JS随即打乱数组实现代码
Dec 03 Javascript
一行命令搞定node.js 版本升级
Jul 20 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
Dec 16 Javascript
JSONP跨域请求实例详解
Jul 04 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
Jan 25 Javascript
vue表单自定义校验规则介绍
Aug 28 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
Jan 24 Javascript
深入理解Vue keep-alive及实践总结
Aug 21 Javascript
JS工厂模式开发实践案例分析
Oct 17 Javascript
部署vue+Springboot前后端分离项目的步骤实现
May 31 Javascript
JavaScript array常用方法代码实例详解
Sep 02 Javascript
使用veloticy-ui生成文字动画效果
Feb 08 #Javascript
js中let和var定义变量的区别
Feb 08 #Javascript
详解Nuxt.js Vue服务端渲染摸索
Feb 08 #Javascript
VUE 使用中踩过的坑
Feb 08 #Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
Feb 08 #Javascript
在vue项目中使用element-ui的Upload上传组件的示例
Feb 08 #Javascript
vue中实现methods一个方法调用另外一个方法
Feb 08 #Javascript
You might like
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
风格模板初级不完全修改教程
2006/10/09 PHP
php判断两个日期之间相差多少个月份的方法
2015/06/18 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
php获取excel文件数据
2017/04/21 PHP
php app支付宝回调(异步通知)详解
2018/07/25 PHP
jquery 常用操作方法
2010/01/28 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
用jquery实现输入框获取焦点消失文字
2013/04/27 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
Node.js开源应用框架HapiJS介绍
2015/01/14 Javascript
基于HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)
2016/01/05 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
D3.js实现简洁实用的动态仪表盘的示例
2018/04/04 Javascript
uni-app之APP和小程序微信授权方法
2019/05/09 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
[13:21]DOTA2国际邀请赛采访专栏:RSnake战队国士无双,Fnatic.Fly
2013/08/06 DOTA
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
Python实现读取文件最后n行的方法
2017/02/23 Python
python中使用正则表达式的连接符示例代码
2017/10/10 Python
使用python实现knn算法
2017/12/20 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
python一些性能分析的技巧
2020/08/30 Python
python3.7.3版本和django2.2.3版本是否可以兼容
2020/09/01 Python
《可爱的动物》教学反思
2014/02/22 职场文书
少儿节目主持串词
2014/04/02 职场文书
图书馆志愿者活动总结
2014/06/27 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
2014年涉外离婚协议书范本
2014/11/20 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
信访维稳承诺书
2015/05/04 职场文书
关于车尾的标语大全
2015/08/11 职场文书
教师法制教育培训学习心得体会
2016/01/14 职场文书
Android Gradle 插件自定义Plugin实现注意事项
2022/06/16 Java/Android