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 相关文章推荐
js Calender控件使用详解
Jan 05 Javascript
JQuery实现鼠标滚轮滑动到页面节点
Jul 28 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
Dec 14 Javascript
javascript html5 canvas实现可拖动省份的中国地图
Mar 11 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
Jan 04 Javascript
JavaScript解析JSON格式数据的方法示例
Jan 24 Javascript
JS按条件 serialize() 对应标签的使用方法
Jul 24 Javascript
JS中数据结构之栈
Jan 01 Javascript
JS div匀速移动动画与变速移动动画代码实例
Mar 26 Javascript
javascript实现前端成语点击验证优化
Jun 24 Javascript
解决vue scoped scss 无效的问题
Sep 04 Javascript
vue $router和$route的区别详解
Dec 02 Vue.js
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
PHILIPS AE3805收音机的分析打磨
2021/03/02 无线电
php遍历文件夹和文件列表示例分享
2014/03/11 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
2014/08/21 PHP
php中strtotime函数性能分析
2016/11/20 PHP
laravel 实现设置时区的简单方法
2019/10/10 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
Google 地图事件实例讲解
2016/08/06 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
2016/10/04 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
vue-froala-wysiwyg 富文本编辑器功能
2019/09/19 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
[51:53]完美世界DOTA2联赛决赛日 Inki vs LBZS 第二场 11.08
2020/11/10 DOTA
python基础教程之获取本机ip数据包示例
2014/02/10 Python
Python2.7下安装Scrapy框架步骤教程
2017/12/22 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
2018/10/14 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
如何将字串String转换成整数int
2015/02/21 面试题
2014年公司庆元旦活动方案
2014/03/05 职场文书
电子工程专业毕业生求职信
2014/03/14 职场文书
《赠汪伦》教学反思
2014/04/12 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
户外宣传策划方案
2014/05/25 职场文书
群众路线查摆问题整改措施
2014/10/10 职场文书
党小组评议意见
2015/06/02 职场文书
六一活动主持词
2015/06/30 职场文书
《将心比心》教学反思
2016/02/23 职场文书
2019自荐信范文集锦!
2019/07/03 职场文书
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang
基于Redission的分布式锁实战
2022/08/14 Redis