关于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中对于批量deferred的处理方法
Jan 22 Javascript
javascript如何判断输入的url是否正确
Apr 11 Javascript
javascript 获取函数形参个数
Jul 31 Javascript
JavaScript中实现单体模式分享
Jan 29 Javascript
JS实现两表格里数据来回转移的方法
May 28 Javascript
JavaScript脚本库编写的方法
Dec 09 Javascript
AngularJS  $on、$emit和$broadcast的使用
Sep 05 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
Dec 26 Javascript
微信小程序入门之广告条实现方法示例
Dec 05 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
Sep 06 Javascript
使用layui定义一个模块并使用的例子
Sep 14 Javascript
layer.prompt输入层的例子
Sep 24 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 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
drupal 代码实现URL重写
2011/05/04 PHP
spl_autoload_register与autoload的区别详解
2013/06/03 PHP
根据中文裁减字符串函数的php代码
2013/12/03 PHP
PHP获取时间排除周六、周日的两个方法
2014/06/30 PHP
PHP编写RESTful接口
2016/02/23 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
一个对于Array的简单扩展
2006/10/03 Javascript
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
node.js中的path.isAbsolute方法使用说明
2014/12/08 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
2015/06/03 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
JavaScript中的Reflect对象详解(ES6新特性)
2016/07/22 Javascript
js手动播放图片实现图片轮播效果
2016/09/17 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
2017/11/29 Javascript
红黑树的插入详解及Javascript实现方法示例
2018/03/26 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
JS实现计算小于非负数n的素数的数量算法示例
2019/02/26 Javascript
vue keep-alive的简单总结
2021/01/25 Vue.js
[53:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第三场 6.2
2018/06/03 DOTA
python写入xml文件的方法
2015/05/08 Python
pandas数据拼接的实现示例
2020/04/16 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
销售人员自我评价
2014/02/01 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
2014年社区个人工作总结
2014/12/02 职场文书
世界文化遗产导游词
2015/02/13 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python
十大最强电系宝可梦,阿尔宙斯电系之一,第七被称为雷神
2022/03/18 日漫