Vue的侦听器

watch:{x(){}}中的方法名必须跟要监听的data中的属性名一样,才代表监听指定属性

当侦听器监听的属性发生变化时,就会调用watch中对应的方法。

new Vue({
	el:"",//关联界面元素
	data:{a:'小狮子'},//vm的数据源
	watch:{a(){}} //x就是监听了data中的x属性的一个监听器
})

注意:

1、侦听器属性,比计算属性计算效率消耗大

2、修改了引用数据内部的属性值:页面会重新渲染,但是侦听器属性不会触发

如:

  <div class="app">
          <button @click="up">+10</button>
          <div>age:{{msg.age}}</div>

    </div>
        new Vue({
            el:".app",
            data:{
                msg:{
                    age:50,
                    name:"Crystalls"
                }
            },
            methods:{
                up(){
                    this.msg.age+=10
                },
            },
            watch:{
                msg(){
                    console.log("watch触发了")
                }
            }
        })

当点击按钮时界面和控制台:

 

  说明

 3 、 如果修改了引用数据内部的属性值也想触发侦听器属性,必须深度监听 deep:true

如将上述例子的js代码修改为

  new Vue({
            el:".app",
            data:{
                msg:{
                    age:50,
                    name:"Crystalls"
                }
            },
            methods:{
                up(){
                    this.msg.age+=10
                },
            },
            watch:{
                msg:{
                    deep:true,
                    handler(){
                        console.log("触发了watch")
                    }
                }
            }
        })

则在点击按钮,界面和控制台

 

 区分点:

            计算属性,属性侦听器,方法,过滤器有什么区别? 哪些是被this对象劫持过的?

            计算属性-方法  

            计算属性(computed)会把计算的结果缓存起来,并监听计算过的数据源 如果监听的数据源发生变化才会重新计算(没有监听的属性发生变化  模板会重新渲染)

            方法(methods)一般是提供给模板事件和其他方法(比如钩子函数)使用,如果在模板中使用了方法,而且不是事件,如果模板中的渲染的任意数据源改变了 它都会重新调用

            过滤器(filters)往往用于数据渲染前的数据处理  除了用法跟方法不一样其他都一样,它没有被劫持

            属性侦听器:只有侦听的属性发生变化才会触发(可以深度侦听,但是更消耗内存)                      

            为什么要把这些函数 分开设计:计算属性,属性侦听器,方法,过滤器

            为了业务更明显  功能更好调试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值