Vue.js watch监视属性知识点总结


Posted in Javascript onNovember 11, 2019

这个属性用来监视某个数据的变化,并触发相应的回调函数执行

1.基本用法

(1)添加watch属性,值为一个对象。对象的属性名就是要监视的数据,属性值为回调函数,每当这个属性名对应的值发生变化,就会触发该回调函数执行

(2)回调函数有2个参数:

newVal:数据发生改变后的值

oldVal:数据发生改变前的值

var vm = new Vue({
  el:'#app',
  data: {
    name: '郭靖'
  },
  watch: {
    name(newVal,oldVal){
      console.log('name的值发生了变化')
      console.log(newVal,oldVal)
    }
  }
})

vm.name = "郭大侠" // 执行这行代码,会触发对应的回调函数

执行结果:

name的值发生了变化
郭大侠 郭靖

2.监听对象内部属性的变化

前面的例子只是监听data中的第一层数据,如果要监听多层次的数据,例如a.b.c,则属性名需要用引号包裹起来

<body>
  <div id="app">
    <p>{{name}}</p>
    <button @click="test">修改wife.name</button>
    <button @click="test2">修改wife</button>
  </div>
</body>
<script>
  var vm = new Vue({
    el:'#app',
    data: {
      name: '郭靖',
      age: 20,
      wife: {
        name: '黄蓉',
        sex: '女'
      }
    },
    watch: {
      //监听wife中的name属性
      'wife.name'(newVal,oldVal){
        console.log('wife.name发生了改变')
      },
      //监听wife
      'wife'(newVal,oldVal){
        console.log('wife发生了改变')
      }
    },
    methods:{
      test(){
        this.wife.name = "'黄帮主'"
      },
      test2(){
        this.wife = {name:'我不是黄蓉',sex:'women'}
      }
    }
  })
</script>

运行结果表明,无论是他父级对象的值发生了改变,还是它本身的值发生了改变,都会使这个监视属性的回调函数执行。

Vue.js watch监视属性知识点总结

3.监听路由变化

提示:路由的路径信息保存在$route.path中

watch:{
 '$route.path':function(newval){
  console.log('change')
 }
}

4.深度监听

监视属性只能监听到当前对象值的变化,而对象内部的属性变化不会监听到,前面我们监听了wife和wife.name,修改了wife.name并不会触发监听wife的回调函数。

想要监听对象内部的属性值变化,需要进行相应的配置。

  • deep:深度监听,默认false
  • handler:回调函数
  • immediate:页面初始化时是否触发回调,默认false
var vm = new Vue({
  el:'#app',
  data: {
    name: '郭靖',
    age: 20,
    wife: {
      name: '黄蓉',
      sex: '女'
    }
  },
  watch: {
    wife:{
      deep:true,
      handler:function(newVal,oldVal){
        console.log('value is change')
      },
      immediate:true
    }
  }
})

vm.wife.name = '黄帮主' // 触发wife属性对应的回调

以上就是关于Vue.js watch监视属性的全部知识点,感谢大家的学习和对三水点靠木的支持。

Javascript 相关文章推荐
改进UCHOME的记录发布,增强可访问性用户体验
Jan 17 Javascript
再论Javascript的类继承
Mar 05 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
Nov 17 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
Nov 19 Javascript
js实现精确到毫秒的倒计时效果
Aug 05 Javascript
微信小程序(应用号)简单实例应用及实例详解
Sep 26 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
Dec 29 Javascript
关于foreach循环中遇到的问题小结
May 08 Javascript
vue 取出v-for循环中的index值实例
Nov 09 Javascript
javascript实现智能手环时间显示
Sep 18 Javascript
JavaScript实现简单动态表格
Dec 02 Javascript
如何通过简单的代码描述Angular父组件、子组件传值
Apr 07 Javascript
javascript数组的定义及操作实例
Nov 10 #Javascript
聊聊Vue中provide/inject的应用详解
Nov 10 #Javascript
浅析vue中的provide / inject 有什么用处
Nov 10 #Javascript
Vue项目中使用jsonp抓取跨域数据的方法
Nov 10 #Javascript
webpack4 optimization使用总结
Nov 10 #Javascript
vue ssr服务端渲染(小白解惑)
Nov 10 #Javascript
node后端服务保活的实现
Nov 10 #Javascript
You might like
PHP中cookies使用指南
2007/03/16 PHP
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
PHP文件读取功能的应用实例
2015/05/08 PHP
js类的静态属性和实例属性的理解
2009/10/01 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
浅谈JavaScript中的作用域和闭包问题
2015/07/07 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
2016/08/24 Javascript
jQuery中的select操作详解
2016/11/29 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
react.js 获取真实的DOM节点实例(必看)
2017/04/17 Javascript
详解vue中的父子传值双向绑定及数据更新问题
2019/06/13 Javascript
详解JavaScript 事件流
2020/09/02 Javascript
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
2018/07/10 Python
Python+OpenCV感兴趣区域ROI提取方法
2019/01/10 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
python 实现方阵的对角线遍历示例
2019/11/29 Python
Pytest框架之fixture的详细使用教程
2020/04/07 Python
python进行二次方程式计算的实例讲解
2020/12/06 Python
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
2015/03/17 HTML / CSS
HTML5实现WebSocket协议原理浅析
2014/07/07 HTML / CSS
戴尔荷兰官方网站:Dell荷兰
2020/10/04 全球购物
上海天奕面试题笔试题
2015/04/19 面试题
建筑工程管理专业自荐信范文
2013/12/28 职场文书
幼儿园消防安全制度
2014/01/26 职场文书
餐厅执行经理岗位职责范本
2014/02/26 职场文书
人事经理岗位职责
2014/04/28 职场文书
班级文化标语
2014/06/23 职场文书
村官个人总结范文
2015/03/03 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
小学生暑假安全保证书
2015/07/13 职场文书
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang
OpenCV实现常见的四种图像几何变换
2022/04/01 Python