首頁  >  文章  >  web前端  >  在vue中如何實現watch監聽物件及對應值的變化

在vue中如何實現watch監聽物件及對應值的變化

亚连
亚连原創
2018-06-04 16:18:512242瀏覽

下面我就為大家分享一篇vue watch監聽物件及對應值的變化詳解,具有很好的參考價值,希望對大家有所幫助。

如下:

var vm=new Vue({
  data:{
    a:1,
    b:{
      c:1
    }
  },
  watch:{
    a(val, oldVal){//普通的watch监听
      console.log("a: "+val, oldVal);
    },
    b:{//深度监听,可监听到对象、数组的变化
      handler(val, oldVal){
        console.log("b.c: "+val.c, oldVal.c);//但是这两个值打印出来却都是一样的
      },
      deep:true
    }
  }
})
vm.a=2
vm.b.c=2

a是一個普通的值,當a的值變化時會被監聽到,b是一個對象,不能直接像a那麼寫,需要深度監聽才能捕捉到,但是當我想去捕捉b對像中某一個值的變化時卻發現,打印出來的兩個值是不一樣的,如圖:

這樣就只能知道物件發生變化卻不知道具體哪個值發生了變化,如果想監聽物件某一個值得變化可以利用計算屬性computed

var vm=new Vue({
  data:{
    b:{
      c:1
    }
  },
  watch:{
    newValue(val, oldVal){
      console.log("b.c: "+val, oldVal);
    }
  },
  computed: {
    newValue() {
      return this.b.c
    }
  }
})
vm.b.c=2

用watch去監聽computed計算過的值就可以直接知道是哪個對應的值發生了變化,結果如圖:

上面是我整理給大家的,希望今後對大家有幫助。

相關文章:

nodejs實作的簡單網頁伺服器功能範例

vue-cli建立的專案,設定多頁面的實作方法

nodejs簡單存取及操作mysql資料庫的方法範例

##

以上是在vue中如何實現watch監聽物件及對應值的變化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn