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实现网页上的浮动广告的简单方法
Jun 14 Javascript
Javascript/Jquery——简单定时器的多种实现方法
Jul 03 Javascript
jQuery关于导航条背景切换效果实现示例
Sep 04 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
May 13 Javascript
js实现简单的左右两边固定广告效果实例
Apr 10 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
Jun 15 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
Jul 01 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
Feb 20 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
Feb 22 Javascript
Vue.set()实现数据动态响应的方法
Feb 07 Javascript
浅谈webpack组织模块的原理
Mar 10 Javascript
JS继承实现方法及优缺点详解
Sep 02 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
改进的IP计数器
2006/10/09 PHP
基于php iconv函数的使用详解
2013/06/09 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
jquery图片滚动放大代码分享(2)
2015/08/28 Javascript
前端微信支付js代码
2016/07/25 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
2018/09/14 Javascript
web页面和微信小程序页面实现瀑布流效果
2018/09/26 Javascript
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
2019/04/13 Javascript
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
Windows下安装 node 的版本控制工具 nvm
2020/02/06 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
2020/08/27 Javascript
python获取文件后缀名及批量更新目录下文件后缀名的方法
2014/11/11 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
浅谈Django REST Framework限速
2017/12/12 Python
Python函数any()和all()的用法及区别介绍
2018/09/14 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
2019/07/07 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
2020/01/14 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
Pycharm github配置实现过程图解
2020/10/13 Python
CSS3教程(10):CSS3 HSL声明设置颜色
2009/04/02 HTML / CSS
CSS3实现同时执行倾斜和旋转的动画效果
2016/10/27 HTML / CSS
uniapp+Html5端实现PC端适配
2020/07/15 HTML / CSS
公司年会抽奖活动主持词
2014/03/31 职场文书
大学新闻系求职信
2014/06/03 职场文书
关于安全的标语
2014/06/10 职场文书
促销活动总结怎么写
2014/06/25 职场文书
我们的节日元宵活动方案
2014/08/23 职场文书
科技活动周标语
2014/10/08 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
毕业酒会致辞
2015/07/29 职场文书
七年级语文教学反思
2016/03/03 职场文书
Python基础之进程详解
2021/05/21 Python