zoukankan      html  css  js  c++  java
  • 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是data的return返回对象中的数组变量,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
        }
    }
  • 相关阅读:
    #1071 : 小玩具
    #1063 : 缩地
    #1124 : 好矩阵
    hiho#1145 : 幻想乡的日常
    hiho#14
    hiho 毁灭者问题
    西南民大oj(递推)
    西南民大oj(矩阵快速幂)
    西南民大oj(两园交求面积)
    hdu2844(多重背包)
  • 原文地址:https://www.cnblogs.com/zhangdongya/p/11304223.html
Copyright © 2011-2022 走看看