博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue中watch的handler,deep,immediate用法详解
阅读量:3937 次
发布时间:2019-05-23

本文共 1545 字,大约阅读时间需要 5 分钟。

我们使用watch监听数据时,有三个选项,handler,deep,immediate

handler

我们平时的写法,就默认写的是handler,vue.js会处理这个逻辑,最终编译出来就是这个handler(可参考我上篇文章的watch)

watch: {
// 通过输入框文字的变化,来改变下面的数据 ipt: {
handler(newVal,oldVal) {
console.log(111) if (newVal == "小红") {
this.name = "小红"; this.gender = "女"; this.age = 18; this.height = 160; } else {
this.name = "无"; this.gender = "无"; this.age = "无"; this.height = "无"; } }, immediate:false, //值为true或false,默认false deep:false //值为true或false,默认false } }, //当immediate和deep都为false时,上下两种写法效果一样 watch:{
// 通过输入框文字的变化,来改变下面的数据 ipt(val){
if(val == '小红'){
this.name = '小红' this.gender = '女' this.age = 18 this.height = 160 }else{
this.name = '无' this.gender = '无' this.age = '无' this.height = '无' } } },

immediate

该值默认是false,在进入页面时,第一次绑定值,不会立刻执行监听,只有数据发生改变才会执行handler中的操作,我们来输出看一下

immediate为false:

在这里插入图片描述
immediate为true:
我们可以看到,handler会在第一次绑定值时就触发
在这里插入图片描述

deep

vue是不能检测到对象属性的添加或删除,我们使用watch监听一个对象时,除非是直接重新给对象赋值,否则是不能监听到对象里的值的变化的

deep就是用来进行深度监听的!

我们绑定一个对象,修改对象里面的值,看下deep为false时的效果(其实就是毫无效果):

在这里插入图片描述

把deep设为true后,就可以得到我们想要的结果了,可以监听到对象属性的变化
在这里插入图片描述

转载地址:http://twrgn.baihongyu.com/

你可能感兴趣的文章
Kryo:快速、高效的序列化框架
查看>>
spring抛出BeanCreationException之@Autowired,@Qualifier
查看>>
Intellij IDEA 快捷键整理
查看>>
idea的基本Debug调试
查看>>
TCP: time wait bucket table overflow解决方法
查看>>
springmvc常用注解标签详解
查看>>
ffmpeg基本用法(转)介绍
查看>>
Java通过调用FFMPEG获取视频时长(已测试)
查看>>
java.lang.ProcessBuilder类(系统进程)
查看>>
多线程Runtime.getRuntime().exec常见问题
查看>>
process.waitFor() 返回值含义
查看>>
调用Process.waitfor导致的进程挂起(较详细)
查看>>
springmvc支持json和jsonp类型数据
查看>>
获取 request 中用POST方式"Content-type"是"application/json"发送的 json 数据
查看>>
Nginx反向代理,负载均衡,redis session共享,keepalived高可用
查看>>
web项目部署补丁包
查看>>
python的json.dumps输出中文
查看>>
webSocket与html区别,以及服务端与客户端消息通讯利用webSocket
查看>>
mysql在java中处理update语句使用了表别名,不起作用
查看>>
[Google Guava] 3-缓存介绍(转)
查看>>