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题目,重写函数让其无限相加
Feb 15 Javascript
JS+JSP checkBox 全选具体实现
Jan 02 Javascript
AngularJS基础学习笔记之指令
May 10 Javascript
基于js实现投票的实例代码
Aug 04 Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
Nov 24 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
Mar 09 Javascript
使用clipboard.js实现复制功能的示例代码
Oct 16 Javascript
基于Vue+element-ui 的Table二次封装的实现
Jul 20 Javascript
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
Nov 13 Javascript
使用原生JS实现滚轮翻页效果的示例代码
May 31 Javascript
Vue父组件监听子组件生命周期
Sep 03 Javascript
如何在 ant 的table中实现图片的渲染操作
Oct 28 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投票系统的设计和实现分享
2012/09/23 PHP
php获得文件大小和文件创建时间的方法
2015/03/13 PHP
php实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
浅谈php的优缺点
2015/07/14 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
actionscript与javascript的区别
2011/05/25 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
JavaScript实现网站访问次数统计代码
2015/08/12 Javascript
JS实现网页标题随机显示名人名言的方法
2015/11/03 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
2016/09/20 Javascript
js控制li的隐藏和显示实例代码
2016/10/15 Javascript
Javascript 制作图形验证码实例详解
2016/12/22 Javascript
jQuery实现简单弹窗遮罩效果
2017/02/27 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
2019/02/12 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
js实现中文实时时钟
2020/01/15 Javascript
angular组件间通讯的实现方法示例
2020/05/07 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
2020/10/22 Javascript
Python使用自带的ConfigParser模块读写ini配置文件
2016/06/26 Python
Python自动化运维和部署项目工具Fabric使用实例
2016/09/18 Python
Python实现网络端口转发和重定向的方法
2016/09/19 Python
老生常谈python的私有公有属性(必看篇)
2017/06/09 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
python dir函数快速掌握用法技巧
2020/12/09 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
2021/01/19 Python
GUESS盖尔斯法国官网:美国时尚品牌
2016/09/23 全球购物
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
中学语文教学反思
2016/02/16 职场文书
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis