关于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 相关文章推荐
js setattribute批量设置css样式
Nov 26 Javascript
通过一段代码简单说js中的this的使用
Jul 23 Javascript
js在IE与firefox的差异集锦
Nov 11 Javascript
javascript事件绑定学习要点
Mar 09 Javascript
jquery 动态增加删除行的简单实例(推荐)
Oct 12 Javascript
JavaScript中的 attribute 和 jQuery中的 attr 方法浅析
Jan 04 Javascript
Easyui Tree获取当前选择节点的所有顶级父节点
Feb 14 Javascript
前端页面文件拖拽上传模块js代码示例
May 19 Javascript
jstree单选功能的实现方法
Jun 07 Javascript
vue实现的下拉框功能示例
Jan 29 Javascript
Angular 2使用路由自定义弹出组件toast操作示例
May 10 Javascript
JQuery 实现文件下载的常用方法分析
Oct 29 jQuery
使用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
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
2006/12/06 PHP
PHP5中GD库生成图形验证码(有汉字)
2013/07/28 PHP
PHP基于数组实现的分页函数实例
2014/08/20 PHP
PHP安装threads多线程扩展基础教程
2015/11/17 PHP
php实现文件预览功能
2017/05/23 PHP
PHPExcel 修改已存在Excel的方法
2018/05/03 PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
2018/10/14 PHP
js实现简单模态窗口,背景灰显
2008/11/14 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
2010/05/26 Javascript
在网页中使用document.write时遭遇的奇怪问题
2010/08/24 Javascript
JS获取键盘上任意按键的值(实例代码)
2013/11/12 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
如何获取网站icon有哪些可行的方法
2014/06/05 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
jQuery实现瀑布流布局
2014/12/12 Javascript
Jquery判断form表单数据是否变化
2016/03/30 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
js中常用的Tab切换效果(推荐)
2016/08/30 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
vue+axios新手实践实现登陆的示例代码
2018/06/06 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
js实现弹窗效果
2020/08/09 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
Python设置Socket代理及实现远程摄像头控制的例子
2015/11/13 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
2016/08/30 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
python实现将汉字保存成文本的方法
2018/11/16 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
详解CSS3伸缩布局盒模型Flex布局
2018/08/20 HTML / CSS
html5 Canvas实现图片旋转的示例
2018/01/15 HTML / CSS
美国百货齐全的精品网站,提供美式风格的产品:Overstock.com
2016/07/22 全球购物
财务部出纳岗位职责
2013/12/22 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
2015年全国保险公众宣传日活动方案
2015/05/06 职场文书
Django使用redis配置缓存的方法
2021/06/01 Redis
python异常中else的实例用法
2021/06/15 Python