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 相关文章推荐
浅析Node.js中的内存泄漏问题
Jun 23 Javascript
javascript 应用小技巧方法汇总
Jul 05 Javascript
javascript中使用正则表达式清理table样式的代码
Apr 01 Javascript
jquery实现倒计时功能
Dec 28 Javascript
JS实现搜索框文字可删除功能
Dec 28 Javascript
js实现一个简单的数字时钟效果
Mar 29 Javascript
node.js基础知识小结
Feb 26 Javascript
webpack 3.X学习之多页面打包的方法
Sep 04 Javascript
详解vue如何使用rules对表单字段进行校验
Oct 17 Javascript
JavaScript cookie原理及使用实例
May 08 Javascript
JSONP 的原理、理解 与 实例分析
May 16 Javascript
JS实现多选框的操作
Jun 24 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
PHP下MAIL的另一解决方案
2006/10/09 PHP
基于PHP 面向对象之成员方法详解
2013/05/04 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
基于jquery实现的可以编辑选择的下拉框的代码
2010/11/19 Javascript
学习并汇集javascript匿名函数
2010/11/25 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
使用JS获取当前地理位置方法汇总
2014/12/18 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
基于javascript实现页面加载loading效果
2020/09/15 Javascript
JavaScript数组去重的6个方法
2017/01/21 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
2017/04/07 Javascript
JavaScript实现一个空中避难的小游戏
2017/06/06 Javascript
vue router使用query和params传参的使用和区别
2017/11/13 Javascript
React Native 图片查看组件的方法
2018/03/01 Javascript
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
Layui数据表格之单元格编辑方式
2019/10/26 Javascript
JS原型和原型链原理与用法实例详解
2020/02/05 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
如何将Node.js中的回调转换为Promise
2020/11/10 Javascript
[51:34]Ti4主赛事胜者组 DK vs EG 2
2014/07/19 DOTA
Python基本数据类型详细介绍
2014/03/11 Python
解决Python requests库编码 socks5代理的问题
2018/05/07 Python
在python中计算ssim的方法(与Matlab结果一致)
2019/12/19 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
什么是设计模式
2012/06/17 面试题
JDBC操作数据库的基本流程是什么
2014/10/28 面试题
核心价值观演讲稿
2014/05/13 职场文书
离婚协议书范文2014(夫妻感情破裂)
2014/12/14 职场文书
关于Redis的主从复制及哨兵问题
2022/06/16 Redis