关于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调用webService远程访问出错的解决方法
May 21 Javascript
JS 进度条效果实现代码整理
May 21 Javascript
jquery设置元素的readonly和disabled的写法
Sep 22 Javascript
Json序列化和反序列化方法解析
Dec 19 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
Dec 22 Javascript
jQuery Validate 相关参数及常用的自定义验证规则
Mar 06 Javascript
Vue如何引入远程JS文件
Apr 20 Javascript
Webpack性能优化 DLL 用法详解
Aug 10 Javascript
JS点击动态添加标签、删除指定标签的代码
Apr 18 Javascript
vue 实现购物车总价计算
Nov 06 Javascript
vue 实现v-for循环回来的数据动态绑定id
Nov 07 Javascript
antd多选下拉框一行展示的实现方式
Oct 31 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
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
2010/05/04 PHP
使用PHP计算两个路径的相对路径
2013/06/14 PHP
style、 currentStyle、 runtimeStyle区别分析
2010/08/01 Javascript
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
js判断url是否有效的两种方法
2014/03/04 Javascript
调整小数的格式保留小数点后两位
2014/05/14 Javascript
Angularjs 基础入门
2014/12/26 Javascript
jQuery EasyUI封装简化操作
2016/09/18 Javascript
javaScript基础详解
2017/01/19 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
2017/03/28 Javascript
简单实现jquery隔行变色
2017/11/09 jQuery
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
uni-app微信小程序登录授权的实现
2020/05/22 Javascript
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
[01:06]欢迎来到上海,TI9
2018/08/26 DOTA
Python中的自定义函数学习笔记
2014/09/23 Python
PyQt 线程类 QThread使用详解
2017/07/16 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
基于Python组装jmx并调用JMeter实现压力测试
2020/11/03 Python
深入解析HTML5 Canvas控制图形矩阵变换的方法
2016/03/24 HTML / CSS
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
Lookfantastic法国官网:英国知名美妆购物网站
2017/10/28 全球购物
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
精伦电子Java笔试题
2013/01/16 面试题
《三个小伙伴》教学反思
2014/04/11 职场文书
食品安全责任书范本
2015/05/09 职场文书
基于Redis位图实现用户签到功能
2021/05/08 Redis
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python
JavaScript ES6的函数拓展
2022/01/18 Javascript
MySQL Server层四个日志的实现
2022/03/31 MySQL