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 相关文章推荐
setTimeout与setInterval在不同浏览器下的差异
Jan 24 Javascript
Javascript技巧之不要用for in语句对数组进行遍历
Oct 20 Javascript
jquery获得option的值和对option进行操作
Dec 13 Javascript
jquery复选框全选/取消示例
Dec 30 Javascript
jQuery实现只允许输入数字和小数点的方法
Mar 02 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
Nov 03 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
Mar 09 Javascript
vue-quill-editor实现图片上传功能
Aug 08 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
Aug 25 Javascript
使用JS动态显示文本
Sep 09 Javascript
用JavaScript做简易的购物车的代码示例
Oct 20 Javascript
JavaScript模板引擎原理与用法详解
Dec 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
PHP网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
2014/11/22 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
2017/02/08 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
PHP强制转化的形式整理
2020/05/22 PHP
js 实现无干扰阴影效果 简单好用(附文件下载)
2009/12/27 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
详解vue.js之绑定class和style的示例代码
2017/08/24 Javascript
使用JavaScript中的lodash编写双色球效果
2018/06/24 Javascript
详解微信小程序中组件通讯
2018/10/30 Javascript
微信小程序实现登录注册tab切换效果
2020/12/29 Javascript
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
js form表单input框限制20个字符,10个汉字代码实例
2019/04/12 Javascript
vue父子组件通信的高级用法示例
2019/08/29 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
python实现数据写入excel表格
2018/03/25 Python
如何定义TensorFlow输入节点
2020/01/23 Python
如何快速理解python的垃圾回收机制
2020/09/01 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
如何避免常见的6种HTML5错误用法
2017/11/06 HTML / CSS
全世界最美丽的四星和五星级酒店预订:Prestigia.com
2017/11/15 全球购物
Ramy Brook官网:美国现代女装品牌
2019/06/18 全球购物
舞蹈专业求职信
2014/06/13 职场文书
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
2014年优秀班主任工作总结
2014/12/16 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
vue中div禁止点击事件的实现
2022/04/02 Vue.js