Vue监控器watch的全面解析
前言
前面讲到了计算属性computed,这次讲的是监控器watch,主要任务就是监控变量的变化
正文
watch是一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。
1.watch擅长处理的场景:一个数据影响多个数据
2.computed擅长处理的场景:一个数据受多个数据影响
watch的特点:
1.当变量变化时调用函数
2.如果不设置immediate则在初始绑定值时不会执行
watch有两个选项:
1.deep选项:表示深层遍历,当需要监控对象内部值的变化时,可以在选项参数中指定 deep: true。注意监听数组的变动不需要这么做
2.immediate选项:如果在选项参数中指定 immediate: true,将立即触发监控中变量的函数(如果我们需要在最初绑定值的时候也执行监控函数,就需要用到immediate属性)
watch的简单用法:
watch:{// 监听stuName的变化情况
stuName: function(newVal, oldVal){//stuName是数组变量,newVal是属性变化后的值,oldVal是属性变化前的值
console.log(newVal,oldVal);
}
}
watch中的键也可以是$route之类的的实例属性:
watch: {
'$route': function(newVal, oldVal){
console.log(newVal,oldVal);
}
}
watch对象的值也可以是方法名:
watch: {
dataName: 'getPath'
},
methods: {
getPath:function(){}
}
当watch监控对象时有两种方法:
方法一:(在只监控对象内某一属性变化时使用)
watch:{
'obj.a':{ //加引号监听对象里的属性
handler(newValue,oldValue){
console.log('obje changed')
}
}
}
方法二:(当需要监控对象的所有属性变化时使用)
watch:{
obj:{
handler(newValue,oldValue){//此函数名是vue提供的
console.log('obj changed')
},
deep:true
}
}
Vue监控器watch的全面解析的更多相关文章
- vue.js响应式原理解析与实现
vue.js响应式原理解析与实现 从很久之前就已经接触过了angularjs了,当时就已经了解到,angularjs是通过脏检查来实现数据监测以及页面更新渲染.之后,再接触了vue.js,当时也一度很 ...
- vue组件之间传值方式解析
vue组件之间传值方式解析一.父组件传到子组件 1.父组件parent代码如下: <template> <div class="parent"> <h ...
- 对Vue中的MVVM原理解析和实现
对Vue中的MVVM原理解析和实现 首先你对Vue需要有一定的了解,知道MVVM.这样才能更有助于你顺利的完成下面原理的阅读学习和编写 下面由我阿巴阿巴的详细走一遍Vue中MVVM原理的实现,这篇文章 ...
- vue.js响应式原理解析与实现—实现v-model与{{}}指令
上一节我们已经分析了vue.js是通过Object.defineProperty以及发布订阅模式来进行数据劫持和监听,并且实现了一个简单的demo.今天,我们就基于上一节的代码,来实现一个MVVM类, ...
- 浅析Vue原理(部分源码解析)
响应式 Object.defineProperty Object.defineProperty(obj, prop, descriptor) // 对象.属性.描述符 Object.definePro ...
- Vue 引入 .md 文件,解析markdown语法
module.exports = { chainWebpack: config => { config.module .rule('md') .test(/\.md$/) .use('html- ...
- vue 圆形进度条组件解析
项目简介 本组件是vue下的圆形进度条动画组件 自由可定制,几乎全部参数均可设置 源码简单清晰 面向人群 急于使用vue圆形进度条动画组件的同学.直接下载文件,拷贝代码即可运行. 喜欢看源码,希望了解 ...
- Vue双向数据绑定原理深度解析
首先,什么是双向数据绑定?Vue是三大MVVM框架之一,数据绑定简单来说,就是当数据发生变化时,相应的视图会进行更新,当视图更新时,数据也会跟着变化. 在分析其原理和代码的时候,大家首先了解如下几个j ...
- 【vue】nextTick源码解析
1.整体入手 阅读代码和画画是一样的,忌讳一开始就从细节下手(比如一行一行读),我们先将细节代码折叠起来,整体观察nextTick源码的几大块. 折叠后代码如下图 整体观察代码结构 上图中,可以看到: ...
随机推荐
- Xcode模拟器无法启动解决办法
今天遇到模拟器无法启动问题,点击模拟器或者Xcode build模拟器就一直跳,跳一会就不跳了,然后查看模拟器状态,显示为无响应.或者黑屏,等半天不动. 如果你有类似情况可以尝试在终端执行以下命令: ...
- bayaim_今晚打老虎
bayaim_2018年11月22日11:01:14 <<<--- 再牛逼的肖邦,也尼玛弹奏不出我内心的悲伤.--->>> 艹,今天想骂人,艹TMD自己,不小心把自 ...
- html学习之二(常用标签练习)
<!DOCTYPE html><head> <meta charset="utf-8"> <title>锚点链接</title ...
- JAVA字符串转换整数
public class compint { /** * @param args */ public static void main(String[] args) { // TODO Auto-ge ...
- 201871010113-刘兴瑞《面向对象程序设计(java)》第六-七周学习总结
项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>htt ...
- 最短路问题的三种算法&模板
最短路算法&模板 最短路问题是图论的基础问题.本篇随笔就图论中最短路问题进行剖析,讲解常用的三种最短路算法:Floyd算法.Dijkstra算法及SPFA算法,并给出三种算法的模板.流畅阅读本 ...
- git--配置文件、.gitignore
配置文件 git给我们提供了三种配置文件的方法,一种是项目配置文件,一种是全局配置文件,还有一种是系统配置文件. 在我们第一次使用git commit提交代码的时候,git让我们配置用户名和邮箱 全局 ...
- stm32串口烧写程序到开发板
前言:我们如果要断电后重启板子还能使用程序的话就需要通过串口把程序烧写到开发板中. 1.设置Keil编译完之后,生成Hex文件.在工程选项[output]的标签,勾选“Create HEX File” ...
- [LOJ 2134][UOJ 132][BZOJ 4200][NOI 2015]小园丁与老司机
[LOJ 2134][UOJ 132][BZOJ 4200][NOI 2015]小园丁与老司机 题意 给定平面上的 \(n\) 个整点 \((x_i,y_i)\), 一共有两个问题. 第一个问题是从原 ...
- mysql事务隔离级别与设置
mysql数据库,当且仅当引擎是InnoDB,才支持事务: 1.隔离级别 事务的隔离级别分为:未提交读(read uncommitted).已提交读(read committed).可重复读(repe ...