vue 中的侦听属性watch

博客介绍了数据监听的作用是监听数据变化,阐述了简单数据类型和复杂类型的监听方式。对于复杂类型监听 obj 需配置参数,如 deep 设为 true 实现深度监听,immediate 设为 true 可立即监听,handler 为深度监听对应函数名。还提到一种简单方式但不能页面加载就监听。

侦听的作用:监听数据的变化的

使用

<div id="app">
    <h1>{{ num }}</h1>
</div>

(1)简单的数据类型:

    const vm = new Vue({
        el:'#app',
        data:{
            num:100
        },
        watch:{
            num (newVal ,oldVal){  //获取新的值,得到修改前的值
                console.log('新的值' , newVal ,'旧的值'  ,oldVal)
            }
        }
    })

(2)复杂类型

const vm = new Vue({
    el:'#app',
    data:{
        obj:{  //对象的形式 
            name:'szf',
        }
    },
    watch:{
        obj:{
            handler(newVal){
                console.log(newVal.name);  //因为复杂类型直接写  监听的是对象的地址  所以不会打印
            }
        }
    }
})

监听 obj ,如果监听成功 newVal 就是obj的最新值 newVal 也是对象

因为obj是复杂类型 引用类型,直接这么写,监听的是对象的地址

所以需要配置参数

(1)deep:true:深度监听

(2)immediate: true, //立即监听 这样在页面刷新的时候就开始监听了,而不是等到第一次触发

(3)handler(newVal) :深度监听对应的函数名必须为handler,否则无效果,因为watcher里面对应的是对handler的调用

const vm = new Vue({
    el:'#app',
    data:{
        obj:{  //对象的形式 
            name:'szf',
        }
    },
    watch:{
        obj:{
            deep:true,
            immediate:true,
            handler(newVal){
                console.log(newVal.name);  //因为复杂类型直接写  监听的是对象的地址  所以不会打印
            }
        }
    }
})

还有一种方式 简单粗暴点,但是不能够页面加载就监听(相当于上面的代码少了immediate参数)

 'obj.name'(newVal){
       console.log(newVal);
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值