vue(七)--監聽屬性(watch)

1.watch:用來監聽每個屬性的變化
2.watch這個對象裏面都是函數,函數的名稱是data中的屬性名稱,watch中的函數不須要調用
3.當屬性發生改變那麼就會觸發watch函數,每一個函數都會接受兩個值,一個是新值,一個是舊值
4.咱們能夠在watch當中就行新舊值的判斷來減小虛擬dom的渲染
eg:
watch:{
    a(newVal,oldVal){
    if(newVal != oldVal){
        this.sum = newVal+this.b;
    }
    console.log("a發生了改變",newVal,oldVal)
}
5.只要是當前的屬性值發生改變就會觸發它所對應的函數
6.若是咱們須要對對象進行監聽的時候須要將屬性值設置爲key值,val值爲一個對象,對象中有兩個參數是必填,一個是handler函數,一個是deep爲true,這樣才能實現深度監聽
eg:
obj:{
    handler(newVal){
    console.log("obj發生了改變",newVal)
    },
    deep:true
}
 
demo:
 <div id = "computed_props">
         公里 : <input type = "text" v-model = "kilometers">
         米 : <input type = "text" v-model = "meters">
      </div>
       <p id="info"></p>
      <script type = "text/javascript">
         var vm = new Vue({
            el: '#computed_props',
            data: {
               kilometers : 0,
               meters:0
            },
            methods: {
            },
            computed :{
            },
            watch : {
               kilometers:function(val) {
                  this.kilometers = val;
                  this.meters = this.kilometers * 1000
               },
               meters : function (val) {
                  this.kilometers = val/ 1000;
                  this.meters = val;
               }
            }
         });</script>

相關文章
相關標籤/搜索