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 相关文章推荐
jQuery 拖动层(在可视区域范围内)
May 24 Javascript
浅析jquery的作用与优势
Dec 02 Javascript
javascript对象的使用和属性操作示例详解
Mar 02 Javascript
js随机生成26个大小写字母
Feb 12 Javascript
如何防止INPUT按回车自动提交表单FORM
Dec 06 Javascript
js实现模糊匹配功能
Feb 15 Javascript
JavaScript实现替换字符串中最后一个字符的方法
Mar 07 Javascript
Vue表单验证插件Vue Validator使用方法详解
Apr 07 Javascript
JavaScript之filter_动力节点Java学院整理
Jun 28 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
Nov 17 Javascript
angular实现页面打印局部功能的思考与方法
Apr 13 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
Aug 12 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
关于Zend Studio 配色方案插件的介绍
2013/06/24 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
2019/10/03 PHP
php 多个变量指向同一个引用($b = &amp;$a)用法分析
2019/11/13 PHP
用JavaScript调用WebService的示例
2008/04/07 Javascript
js 学习笔记(三)
2009/12/29 Javascript
jquery中的 $(&quot;#jb51&quot;)与document.getElementById(&quot;jb51&quot;) 的区别
2011/07/26 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
javascript 10进制和62进制的相互转换
2014/07/31 Javascript
js树插件zTree获取所有选中节点数据的方法
2015/01/28 Javascript
JS+CSS实现表格高亮的方法
2015/08/05 Javascript
分享一个插件实现水珠自动下落效果
2016/06/01 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
利用vue组件自定义v-model实现一个Tab组件方法示例
2017/12/06 Javascript
vue中的适配px2rem示例代码
2018/11/19 Javascript
jQuery 筛选器简单操作示例
2019/10/02 jQuery
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
在Vue中使用Echarts实例图的方法实例
2020/10/10 Javascript
vant 解决tab切换插件标题样式自定义的问题
2020/11/13 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
[01:20:37]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
[38:31]完美世界DOTA2联赛PWL S3 Magma vs GXR 第一场 12.13
2020/12/17 DOTA
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
python:print格式化输出到文件的实例
2018/05/14 Python
Python OpenCV处理图像之图像直方图和反向投影
2018/07/10 Python
Python利用pandas处理Excel数据的应用详解
2019/06/18 Python
Python3 集合set入门基础
2020/02/10 Python
购买瑞典当代设计的腕表和太阳眼镜:TRIWA
2016/10/30 全球购物
HEMA英国:荷兰原创设计
2018/08/28 全球购物
优秀学生自我鉴定范例
2013/12/18 职场文书
岗位说明书标准范本
2014/07/30 职场文书
企业公益活动策划方案
2014/08/24 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
趣味运动会简讯
2015/07/20 职场文书
mysql字符串截取函数小结
2021/04/05 MySQL