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 相关文章推荐
推荐一些非常不错的javascript学习资源站点
Aug 29 Javascript
工作需要写的一个js拖拽组件
Jul 28 Javascript
javascript 文本框水印/占位符(watermark/placeholder)实现方法
Jan 15 Javascript
jquery ajax例子返回值详解
Sep 11 Javascript
js去除空格的12种实用方法
Nov 08 Javascript
简单介绍JavaScript数据类型之隐式类型转换
Dec 28 Javascript
深入理解setTimeout函数和setInterval函数
May 20 Javascript
jquery使用on绑定a标签无效 只能用live解决
Jun 02 Javascript
Vue2路由动画效果的实现代码
Jul 10 Javascript
微信小程序引用公共js里的方法的实例详解
Aug 17 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
Sep 15 Javascript
js实现简单的日历显示效果函数示例
Nov 25 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一句话cmdshell新型 (非一句话木马)
2009/04/18 PHP
php文件怎么打开 如何执行php文件
2011/12/21 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
2014/07/18 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
2016/09/30 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
php实现微信发红包功能
2018/07/13 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
2020/06/06 PHP
js 纯数字不重复排列的另类方法
2010/07/17 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
2014/01/02 Javascript
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
2014/09/17 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
2015/09/24 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
js遍历json的key和value的实例
2017/01/22 Javascript
简单实现AngularJS轮播图效果
2020/04/10 Javascript
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
2017/12/24 jQuery
vue中改变选中当前项的显示隐藏或者状态的实现方法
2018/02/08 Javascript
基于vue实现探探滑动组件功能
2020/05/29 Javascript
详解vue3.0 的 Composition API 的一种使用方法
2020/10/26 Javascript
wxPython使用系统剪切板的方法
2015/06/16 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
Python Pandas数据结构简单介绍
2019/07/03 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
英语故事演讲稿
2014/04/29 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
促销活动计划书
2014/05/02 职场文书
员工生日活动方案
2014/08/24 职场文书
小学校园广播稿(3篇)
2014/09/19 职场文书
调任通知
2015/04/21 职场文书
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL
PyTorch中permute的使用方法
2022/04/26 Python