鍍金池/ 問答/HTML/ vue watch對象的所有屬性

vue watch對象的所有屬性

 let obj = {
        a: {type: 'type1'},
        b: {type: 'type2'},
        c: {type: 'type3'},
        ...
    }
    
假設(shè)我有一個對象,其中有多個不同(不確定長度)的屬性,當(dāng)不同的屬性發(fā)生變化時所做的操作也是不同的,
所以不能直接watch obj本身,那我該怎么樣去watch到obj當(dāng)前哪個屬性發(fā)生變化呢
既要監(jiān)聽有沒有屬性,又要監(jiān)聽屬性所對應(yīng)的值
回答
編輯回答
毀與悔

1.watch整個對象的變化才是深度監(jiān)聽,如果要watch對象單個的屬性變化,需要用computed中間件過度一下;
2.貼上代碼:

data(){
      return{
        'first':{
          second:0
        }
      }
    },
    computed:{
      secondChange(){
        return this.first.second
      }
    },
    watch:{
      secondChange(){
        console.log('second屬性值變化了')
      }
    },

3.至于為什么computed作為中間件可以監(jiān)聽到單個屬性變化?在vue中為什么可以通過computed屬性作為中間件,去監(jiān)聽對象屬性的變化
4.另外我專門寫了一篇文章全面分析computed和watch:Vue的computed和watch的細(xì)節(jié)全面分析
5.可以一起討論下

2017年9月16日 06:31
編輯回答
嫑吢丕

加上deep: true進(jìn)行深度遍歷
clipboard.png

clipboard.png

clipboard.png

2018年4月23日 21:38