Vue 資料相關例項方法vm.$watch、vm.$set、vm.$delete
阿新 • • 發佈:2020-09-22
資料相關例項方法:
vm.$watch
觀察vue例項變化的一個表示式或計算屬性函式。回撥函式得到的引數為新值和舊值。表示式只接受監督的鍵路徑。對於更復雜的表示式,用一個函式取代。
//寫法一: this.$watch('a.b.c', function (newVal, oldVal) {}) //寫法二: watch:{ a:function(val,oldVal){}, "a.b":{ handler:function(newVal,oldVal){}, deep:true//如果監聽的是一個物件,物件內部值發生變化,需要設定deep=true;} }
vm.$set
向響應式物件中新增一個屬性,並確保這個新屬性同樣是響應式的,且觸發檢視更新
語法:vm.$set( target,key,value )
對於物件,propterty必須在data物件上存在才能讓Vue將它轉換為響應式的
var vm = new Vue({ data:{ a:1 } }) vm.a = 1 // 響應式的 vm.b = 2 // 非響應式的 //Vue不允許新增根級別的響應式屬性,但是可以使用 this.$set(this.someObject, "b", 2)||Vue.set(vm.someObject, "b" ,2)
對於陣列,Vue不能檢測以下陣列的變動
var vm = new Vue({ data: { items: ['a', 'b', 'c'] } }) vm.items[1] = 'x' // 不是響應性的 vm.items.length = 2 // 不是響應性的 this.Sset(this.items,1,"x");//處理方法
vm.$delete
刪除物件的屬性,如果物件是響應式的,確保刪除能觸發更新檢視。這個方法主要用於避開vue不能檢測到屬性被刪除的限制。
語法:vm.$delete(target,key)
this.$set(this.someObject, "b" , 2)