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 相关文章推荐
JS分割字符串并放入数组的函数
Jul 04 Javascript
jQuery之日期选择器的深入解析
Jun 19 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
Nov 12 Javascript
JavaScript打印网页指定区域的例子
May 03 Javascript
jQuery菜单插件用法实例
Jul 25 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
Sep 12 Javascript
JS+CSS实现仿msn风格选项卡效果代码
Oct 22 Javascript
Javascript小技能总结(推荐)
Jun 02 Javascript
在vue项目中引入highcharts图表的方法(详解)
Mar 05 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
Mar 06 jQuery
Vue.js获取被选择的option的value和text值方法
Aug 24 Javascript
vue select 获取value和lable操作
Aug 28 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
全国中波电台频率表
2020/03/11 无线电
PHPThumb PHP 图片缩略图库
2012/03/11 PHP
php通过获取头信息判断图片类型的方法
2015/06/26 PHP
PHP使用ActiveMQ实现消息队列的方法详解
2019/05/31 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
2020/08/17 PHP
9个javascript语法高亮插件 推荐
2009/07/18 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
2014/08/18 Javascript
javascript运动详解
2015/07/06 Javascript
使用jQuery判断Div是否在可视区域的方法 判断div是否可见
2016/02/17 Javascript
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
2016/05/10 Javascript
BootStrap 超链接变按钮的实现方法
2016/09/25 Javascript
js仿新浪微博消息发布功能
2017/02/17 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
2016/12/14 Python
pandas DataFrame数据转为list的方法
2018/04/11 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
2018/05/24 Python
python写入并获取剪切板内容的实例
2018/05/31 Python
python实现支付宝转账接口
2019/05/07 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
加拿大时尚床上用品零售商:QE Home | Quilts Etc
2018/01/22 全球购物
终端业务员岗位职责
2013/11/27 职场文书
《充气雨衣》教学反思
2014/04/07 职场文书
应届毕业生自荐信
2014/05/28 职场文书
社团活动总结报告
2014/06/27 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
python如何正确使用yield
2021/05/21 Python
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android
SQLServer之常用函数总结详解
2021/08/30 SQL Server