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+CSS 实现的超Sexy下拉菜单
Jan 17 Javascript
js读取本地excel文档数据的代码
Nov 11 Javascript
dotopAlert 提示用户需安装播放器的代码
Sep 17 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
Feb 25 Javascript
AngularJs 指令详解及示例代码
Sep 01 Javascript
基于vue实现分页/翻页组件paginator示例
Mar 09 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
Apr 21 Javascript
在 Angular中 使用 Lodash 的方法
Feb 11 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
Apr 17 Javascript
对TypeScript库进行单元测试的方法
Jul 18 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
Nov 09 Javascript
EXTJS7实现点击拖拉选择文本
Dec 17 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+mysql开源XNA 聚合程序发布 下载
2007/07/13 PHP
php 动态多文件上传
2009/01/18 PHP
php导出csv文件,可导出前导0实例代码
2016/11/16 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
javascript实现的动态添加表单元素input,button等(appendChild)
2007/11/24 Javascript
各种常用浏览器getBoundingClientRect的解析
2009/05/21 Javascript
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
2012/02/03 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
2017/03/09 Javascript
基于JavaScript中字符串的match与replace方法(详解)
2017/12/04 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
vue移动端实现红包雨效果
2020/06/23 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
2018/12/03 Javascript
详解使用React制作一个模态框
2019/03/14 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
Python的一些用法分享
2012/10/07 Python
Python制作简易注册登录系统
2016/12/15 Python
Python面向对象之静态属性、类方法与静态方法分析
2018/08/24 Python
Python中的元组介绍
2019/01/28 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
Python容器使用的5个技巧和2个误区总结
2019/09/26 Python
python如何修改文件时间属性
2021/02/05 Python
前台文员我鉴定
2014/01/12 职场文书
秘书英文求职信
2014/04/16 职场文书
水污染治理工程专业自荐信
2014/06/21 职场文书
个人安全生产责任书
2014/07/28 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang
使用compose函数优化代码提高可读性及扩展性
2022/06/16 Javascript
Python可视化神器pyecharts绘制水球图
2022/07/07 Python