关于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 相关文章推荐
如何让动态插入的javascript脚本代码跑起来。
Jan 09 Javascript
比较全面的event对像在IE与FF中的区别 推荐
Sep 21 Javascript
JavaScript 高级篇之闭包、模拟类,继承(五)
Apr 07 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
Jul 17 Javascript
js 限制input只能输入数字、字母和汉字等等
Dec 18 Javascript
javascript特殊日历控件分享
Mar 07 Javascript
bootstrap中使用google prettify让代码高亮的方法
Oct 21 Javascript
基于jquery日历价格、库存等设置插件
Jul 05 jQuery
Vue常用的几个指令附完整案例
Nov 06 Javascript
javascrit中undefined和null的区别详解
Apr 07 Javascript
如何获取vue单文件自身源码路径
May 06 Javascript
微信小程序文章详情页跳转案例详解
Jul 09 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
php基础知识:类与对象(1)
2006/12/13 PHP
PHP 数组入门教程小结
2009/05/20 PHP
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
PHP用户注册邮件激活账户的实现代码
2017/05/31 PHP
Jquery 滑入滑出效果实现代码
2010/03/27 Javascript
用javascript为页面添加天气显示实现思路及代码
2013/12/02 Javascript
JS删除字符串中重复字符方法
2014/03/09 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
2015/04/16 Javascript
Javascript实现颜色rgb与16进制转换的方法
2015/04/18 Javascript
javascript时间戳和日期字符串相互转换代码(超简单)
2016/06/22 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
2017/08/15 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
js数组去重的N种方法(小结)
2018/06/07 Javascript
antd form表单数据回显操作
2020/11/02 Javascript
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
Python的Django框架中settings文件的部署建议
2015/05/30 Python
Python正则表达式非贪婪、多行匹配功能示例
2017/08/08 Python
django限制匿名用户访问及重定向的方法实例
2018/02/07 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
Python使用combinations实现排列组合的方法
2018/11/13 Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
2019/02/21 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
Python os模块常用方法和属性总结
2020/02/20 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
python使用numpy中的size()函数实例用法详解
2021/01/29 Python
如何提高SQL Server的安全性
2016/07/25 面试题
医药学专业大学生职业生涯规划书论文
2014/01/21 职场文书
国际贸易专业求职信
2014/06/04 职场文书
写给导师的自荐信
2015/03/06 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
加班费申请报告
2015/05/15 职场文书
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android