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实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
May 27 Javascript
在javascript中如何得到中英文混合字符串的长度
Jan 17 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
May 02 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
May 26 Javascript
jQuery自动添加表单项的方法
Jul 13 Javascript
基于JavaScript实现瀑布流布局(二)
Jan 26 Javascript
AngularJS实现在ng-Options加上index的解决方法
Nov 03 Javascript
js微信支付实现代码
Dec 22 Javascript
jQuery简单实现对数组去重及排序操作实例
Oct 31 jQuery
Angular2.0/4.0 使用Echarts图表的示例代码
Dec 07 Javascript
JS co 函数库的含义和用法实例总结
Apr 08 Javascript
JavaScript中使用Spread运算符的八种方法总结
Jun 18 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中OR与|| AND与&amp;&amp;的区别总结
2013/10/26 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
php使用array_search函数实现数组查找的方法
2015/06/12 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
php 中self,this的区别和操作方法实例分析
2019/11/04 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
可以文本显示的公告栏的js代码
2007/03/11 Javascript
javascript 学习之旅 (2)
2009/02/05 Javascript
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
JavaScript 字符串乘法
2009/08/20 Javascript
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
Angular6中使用Swiper的方法示例
2018/07/09 Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
2018/11/15 Javascript
Vue分页效果与购物车功能
2019/12/13 Javascript
Django中实现一个高性能计数器(Counter)实例
2014/07/09 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
python针对excel的操作技巧
2018/03/13 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
Pandas读取MySQL数据到DataFrame的方法
2018/07/25 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
python实现京东订单推送到测试环境,提供便利操作示例
2019/08/09 Python
基于Python实现剪切板实时监控方法解析
2019/09/11 Python
使用python实现下载我们想听的歌曲,速度超快
2020/07/09 Python
pycharm 关闭search everywhere的解决操作
2021/01/15 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
会计辞职信范文
2014/01/15 职场文书
经典导游欢迎词大全
2014/01/16 职场文书
民主评议党员工作总结
2014/10/20 职场文书
期中考试后的感想
2015/08/07 职场文书