watch监控,对比新值和旧值做出相应判断

数据变化的监控经常使用,我们可以先来看一个简单的数据变化监控的例子。例如天气预报的穿衣指数,它主要是根据温度来进行提示的,当然还有其它的,咱们就不考虑了。

html

<div id="app">
         <span>今日温度{{message}}℃</span>
         <span>穿衣指数{{message2}}</span>
         <br />
         <br />
           <button @click="add">add</button>
           <button @click="decrease">decrease</button>
</div>

js

复制代码
var suggestion=['T恤短袖','夹克长裙','棉衣羽绒服'];
        var vm = new Vue({
            el:"#app",
            data:{
                message:20,
                message2:"T恤短袖"
            },
             methods:{
            add:function(){
                this.message+=5
            },
            decrease:function(){
                this.message-=5
            }
           }
           // 有些时候我们会用实例属性的形式来写watch监控。也就是把我们watch卸载构造器的外部,这样的好处就是降低我们程序的耦合度,使程序变的灵活。
           // ,
           // watch:{
            //     message:function(newVal,oldVal){
            //         if(newVal>=26){
            //             this.message2=suggestion[0];
            //         }else if(newVal<26 && newVal >=0)
            //         {
            //             this.message2=suggestion[1];
            //         }else{
            //             this.message2=suggestion[2];
            //         }
            //     }
            // }
            
        })
        // 实例方法减少代码耦合度
        vm.$watch('message',function(newVal,oldVal){
                    if(newVal>=26){
                        this.message2=suggestion[0];
                    }else if(newVal<26 && newVal >=0){
                        this.message2=suggestion[1];
                    }else{
                        this.message2=suggestion[2];
                    }  
            })
复制代码

 watch中把值赋值后 在mounted是获取不到的 这是有先后顺序的 mounted要先渲染  

监控嵌套内容

复制代码
 inp: {
      isSelectDropdown: false
},  

watch: {
    inp: {
      deep: true,
      handler(val, oldVal) {
        console.log(val.isSelectDropdown);
      },
    }
  },
复制代码

 

posted @   xuanPhoto  阅读(278)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
点击右上角即可分享
微信分享提示