$watch和watch屬性的使用


$watch和watch屬性都是監聽值的變化的,是同一個作用,但是有兩個不同寫法。

用法一:

this.$watch((newVal,oldVal)=>{ })

 

注意:這種方法是監聽不到對象的變化的。

 

用法二:

watch:{
    xxx:(newVal,oldVal)=>{     // xxx是data里的數據
    
    }
}

 

監聽對象某個值的變化 

watch:{
    "xxx.value":(newVal,oldVal)=>{     // xxx.value是data里對象的value
    
    }
}

 

監聽整個對象的變化(深度監聽) ,handle方法:

  //深度監聽
    obj:{
      handler(newVal,oldVal){
        
        
      },
    deep:true }

 

 

例子:

<template>
  <div>
    <input type="text" v-model="name">
    {{name}}
    <input type="text" v-model="age">
    {{age}}
    <input type="text" v-model="obj.id">
    {{obj.id}}
    <input type="text" v-model="obj">
    {{obj}}
  </div>
</template>
<script>
export default {
  name: "Home",
  data() {
    return {
      name: "",
      age: "",
      obj: {
        id: "1",
        addr: "gz"
      }
    };
  },
  created() {
    this.obj = {
      id:"99",
      addr:"gd"
    }
    // 用法一:  this.$watch("要監聽的值",(oldVal,newVal)=>{ })
    this.$watch("name", (newValue, oldValue) => {
      console.log(newValue + "_新值");
      console.log(oldValue + "_舊值");
    });
    //這樣監聽不到對象的變化的
    this.$watch("obj", (newval, oldval) => {
      console.log(newval);
      console.log(oldval);
    });
  },
  //用法二:
  watch: {
    age: (newValue, oldValue) => {
      console.log(newValue);
      console.log(oldValue);
    },
    // 監聽對象中的某個屬性的變化
    "obj.id":(newVal,oldVal)=>{
      console.log(newVal);
      console.log(oldVal);
      
    },
    //深度監聽
    obj:{
      handler(newVal,oldVal){
        console.log(newVal);
        console.log(oldVal);
        
      },
    deep:true } }, };
</script> <style lang="css" scoped> </style>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM