vue深度监听(监听对象和数组的改变)与立即执行监听实例


Posted in Javascript onSeptember 04, 2020

1.vue中监听对象数据属性值的改变,可以使用深度监听

data () {
  return {
   form: {
    status: '',
    cpufrequency: '',
    systemstacksize: '',
    scalabilityclass: ''
   }
  }
 },
 watch: {
  form: { // 深度监听
   handler(val, oldVal){
    console.log('currentForm',val, oldVal)
    // 但是这两个值打印出来却都是一样的,因为它们的引用指向同一个对象/数组
   },
   deep:true
  }
 }

注意:我们应尽量避免在监听方法中更改当前监听对象的属性值,以免再次触发监听函数

2.若只监听某个或部分属性值的变化,则可以配合计算属性computed来解决

data () {
  return {
   form: {
    status: '',
    cpufrequency: '',
    systemstacksize: '',
    scalabilityclass: ''
   }
  }
 },
 computed: {
  status() {
   return this.form.status
  }
 },
 watch: {
  status() {
   console.log('currentVal', this.status)
  }
 }

当然,上面这种方法会多出一个计算属性,并不是最好的方法,通过查看官方api,其实还有一种方法:

data () {
  return {
   form: {
    status: '',
    cpufrequency: '',
    systemstacksize: '',
    scalabilityclass: ''
   }
  }
 },
 watch: {
  'form.status'(val, oldVal) {
   console.log('currentVal', val)
  }
 }

3.取消监听

var unwatch = vm.$watch('a', cb) // 返回一个取消监听函数

unwatch() // 取消观察函数

4.立即触发监听

我们有时会有这个需求,在页面初始化时执行某个监听。因此,我们可能会在 created 中去调用需要执行的监听代码,但现在我们可以使用 immediate 来实现这个功能。

watch: {
  'form.status'() {
   handler(val, oldVal) {
    // 执行一些操作
   },
   immediate: true
  }
 }

补充知识:vue watch监听数据,新老值一样?让其不一样吧!

我就废话不多说了,大家还是直接看代码吧~

data:{
    testData:{
      dataInfo:{
        a: '我是a',
        b: '我是b'
      }
    }
  },
  watch: {
   testData: {
    handler: (val, olVal) => {
     console.log('我变化了', val, olVal)
    },
    deep: true
   }
  }

如果testData发生了变化,就会打印出val,olVal,但是他们打印出来的结果都是一样的,因为数据同源。虽然可以监听到他的变化,但是要比较数据差异就不行了。如果想要得到不同的值可以结合计算属性。

data:{
    testData:{
      dataInfo:{
        a: '我是a',
        b: '我是b'
      }
    }
  },
  watch: {
   testDataNew: {
    handler: (val, olVal) => {
     console.log('我变化了', val, olVal)
    },
    deep: true
   }
  },
  computed: {
   testDataNew() {
    return JSON.parse(JSON.stringify(this.testData))
   }
  }

以上这篇vue深度监听(监听对象和数组的改变)与立即执行监听实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript与flash交互通信基础教程
Aug 07 Javascript
JS增加行复制行删除行的实现代码
Nov 09 Javascript
js通过更改按钮的显示样式实现按钮的滑动效果
Apr 23 Javascript
使用Sticker.js实现贴纸效果
Jan 28 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
Sep 08 Javascript
JavaScript中的call和apply的用途以及区别
Jan 11 Javascript
xmlplus组件设计系列之按钮(2)
Apr 26 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
Dec 12 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
Apr 11 Javascript
微信小程序页面传多个参数跳转页面的实现方法
May 17 Javascript
Vue实现购物车基本功能
Nov 08 Javascript
关于Javascript闭包与应用的详解
Apr 22 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
Sep 04 #Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
Sep 04 #Javascript
在vue中axios设置timeout超时的操作
Sep 04 #Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
Sep 04 #Javascript
JavaScript中的执行环境和作用域链
Sep 04 #Javascript
Vue 禁用浏览器的前进后退操作
Sep 04 #Javascript
详解JavaScript数据类型和判断方法
Sep 04 #Javascript
You might like
基于mysql的bbs设计(五)
2006/10/09 PHP
PHP中用hash实现的数组
2011/07/17 PHP
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
基于jquery插件实现常见的幻灯片效果
2013/11/01 Javascript
纯JS实现动态时间显示代码
2014/02/08 Javascript
jquery默认校验规则整理
2014/03/24 Javascript
jQuery点缩略图弹出层显示大图片
2015/02/13 Javascript
JavaScript验证Email(3种方法)
2015/09/21 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
JS和Canvas实现图片的预览压缩和上传功能
2018/03/30 Javascript
vue如何截取字符串
2019/05/06 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
在漏洞利用Python代码真的很爽
2007/08/26 Python
Python基于smtplib实现异步发送邮件服务
2015/05/28 Python
python处理Excel xlrd的简单使用
2017/09/12 Python
Python字符串的全排列算法实例详解
2019/01/07 Python
华为校园招聘上机笔试题 扑克牌大小(python)
2020/04/22 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
python 数据分析实现长宽格式的转换
2020/05/18 Python
用Python进行websocket接口测试
2020/10/16 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
英国顶尖手表珠宝品牌独家授权经销商:HS Johnson
2020/10/28 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
个人求职简历的自我评价
2013/10/19 职场文书
大学生优秀的自我评价分享
2013/10/22 职场文书
房地产活动策划方案
2014/05/14 职场文书
优秀学生干部先进事迹材料
2014/05/26 职场文书
公司外出活动方案
2014/08/14 职场文书
股东授权委托书范文
2014/09/13 职场文书
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android