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 相关文章推荐
新手入门常用代码集锦
Jan 11 Javascript
javascript中将Object转换为String函数代码 (json str)
Apr 29 Javascript
js写的评论分页(还不错)
Dec 23 Javascript
jquery select 设置默认选中的示例代码
Feb 07 Javascript
JavaScript数组去重的五种方法
Nov 05 Javascript
JSONP原理及简单实现
Jun 08 Javascript
详解vuejs几种不同组件(页面)间传值的方式
Jun 01 Javascript
Vue仿手机qq的实例代码(demo)
Sep 08 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
Oct 28 jQuery
vue2.0+ 从插件开发到npm发布的示例代码
Apr 28 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
Oct 08 Javascript
更优雅的微信小程序骨架屏实现详解
Aug 07 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
基于php伪静态的实现方法解析
2020/07/31 PHP
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
2007/05/07 Javascript
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
jquery弹出框的用法示例(2)
2013/08/26 Javascript
jQuery之过滤元素操作小结
2013/11/30 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
jQuery中DOM节点的删除方法总结(超全面)
2017/01/22 Javascript
BootStrap表单时间选择器详解
2017/05/09 Javascript
js+html5实现侧滑页面效果
2017/07/15 Javascript
基于jquery.page.js实现分页效果
2018/01/01 jQuery
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
vue绑定数字类型 value为数字的实例
2020/08/31 Javascript
利用js canvas实现五子棋游戏
2020/10/11 Javascript
[02:03]永远的信仰DOTA2 中国军团历届国际邀请赛回顾
2016/06/26 DOTA
[22:07]DOTA2-DPC中国联赛 正赛 iG vs Magma 选手采访
2021/03/11 DOTA
pycharm 使用心得(四)显示行号
2014/06/05 Python
Python切换pip安装源的方法详解
2016/11/18 Python
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
对Python中创建进程的两种方式以及进程池详解
2019/01/14 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
安装python及pycharm的教程图解
2019/10/10 Python
日本化妆品植村秀俄罗斯官方网站:Shu Uemura俄罗斯
2020/02/01 全球购物
区域销售经理岗位职责
2013/12/10 职场文书
2014年党的群众路线教育实践活动总结
2014/04/25 职场文书
婚前保证书
2014/04/29 职场文书
优秀安全员事迹材料
2014/05/11 职场文书
英语系本科生求职信
2014/07/15 职场文书
大学感恩节活动总结
2015/05/05 职场文书
党员证明模板
2015/06/19 职场文书
婚礼长辈答谢词
2015/09/29 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
浅谈JS的原型和原型链
2021/06/04 Javascript