vue中如何深度監聽一個對象?


大家都知道,Vue項目中對數據的監聽,提供了一個很好的鈎子watch,watch可以極其方便的監聽我們常用數據類型值的變化,但通常當我們想監聽一個對象中,某個屬性值的變化時,很難達到我們預期的效果。那么如何實現對象屬性的深度監聽呢?
  1.  vue中提供了在watch監聽時設置deep:true 就可以實現對對象的深度監聽;
    •  直接監聽對象--代碼如下: 
      1 watch:{
      2   obj:{ //監聽的對象
      3     deep:true, //深度監聽設置為 true
      4     handler:function(newV,oldV){
      5       console.log('watch中:',newV)
      6     }
      7   }
      8 }
    •  監聽對象下某個屬性--代碼如下:
          data () {
            return {
              obj:{
                name:'夜空中最亮的星星',
                age:18
              }
            }
          },
          watch:{
            'obj.name':{
              deep:true,
              handler:function(newV,oldV){
                console.log('watch中:',newV)
              }
            }
          }

  2.利用computed配合watch實現單個屬性的深度監聽;
    •  代碼如下: 
       1     data () {
       2       return {
       3         obj:{
       4           name:'夜空中最亮的星星',
       5           age:18
       6         }
       7       }
       8     },
       9     computed:{
      10       name(){
      11         return this.obj.name;
      12       }
      13     },
      14     watch:{
      15       name(newV){
      16         console.log('watch中name為:',newV)
      17       }
      18     }

       

 


免責聲明!

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



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