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 函数的执行环境和作用域链的深入解析
Nov 01 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
Apr 14 Javascript
一些有用的JavaScript和jQuery的片段分享
Aug 23 Javascript
JavaScript 代码压缩工具小结
Feb 27 Javascript
HTML Color Picker(js拾色器效果)
Aug 27 Javascript
跟我学习javascript的函数调用和构造函数调用
Nov 16 Javascript
javascript html5 canvas实现可拖动省份的中国地图
Mar 11 Javascript
jQuery 限制输入字符串长度
Jun 20 Javascript
js实现浏览器倒计时跳转页面效果
Aug 12 Javascript
浅谈js数组和splice的用法
Dec 04 Javascript
对比分析Django的Q查询及AngularJS的Datatables分页插件
Feb 07 Javascript
使用layui的router来进行传参的实现方法
Sep 06 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
生成缩略图
2006/10/09 PHP
javascript背投广告代码的完善
2008/04/08 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
基于JavaScript实现图片连播和联级菜单实例代码
2017/07/28 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
2020/04/21 Javascript
elementUI select组件默认选中效果实现的方法
2019/03/25 Javascript
mock.js模拟数据实现前后端分离
2019/07/24 Javascript
关于JS解构的5种有趣用法
2019/09/05 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
python实现调用其他python脚本的方法
2014/10/05 Python
python获取本机mac地址和ip地址的方法
2015/04/29 Python
全面了解python字符串和字典
2016/07/07 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
Python实现快速排序的方法详解
2019/10/25 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
详解django中Template语言
2020/02/22 Python
在Python中实现字典反转案例
2020/12/05 Python
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
AmazeUI的下载配置与Helloworld的实现
2020/08/19 HTML / CSS
印度婴儿用品在线商店:Firstcry.com
2016/12/05 全球购物
SCDKey德国:全球领先的数字游戏市场
2019/04/09 全球购物
毕业生教师求职信
2013/10/20 职场文书
员工工作表扬信范文
2014/01/13 职场文书
劳动竞赛活动方案
2014/02/20 职场文书
房地产项目建议书
2014/03/12 职场文书
现金出纳岗位职责
2014/03/15 职场文书
文明生主要事迹
2014/05/25 职场文书
行政管理专业求职信
2014/07/06 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
红色电影观后感
2015/06/18 职场文书
暑假生活随笔
2015/08/15 职场文书
教师旷工检讨书
2015/08/15 职场文书
matplotlib画混淆矩阵与正确率曲线的实例代码
2021/06/01 Python
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫
MySQL提升大量数据查询效率的优化神器
2022/07/07 MySQL