vue 中 set與 delete的使用

2021-10-07 23:04:21 字數 1183 閱讀 2935

vue無法檢測property的新增或移除,由於vue會在初始化例項時對property執行getter/setter轉換,所以propterty必須在data物件上存在才能讓vue將它轉換為響應式的。例如

var vm = new vue(

})// `vm.a` 是響應式的

vm.b = 2

// `vm.b` 是非響應式的

對於已經建立的例項,vue不允許新增根級別的響應式屬性,但是可以使用

vue.set(vm.someobject, "b" ,2)

也可以使用vm.$set例項方法,這也是全域性vue.set方法的別名

this.$set(this.someobject, "b", 2)
如果為已有的物件賦值多個新property

this.someobject = object.assign({},this.someobject,)
例子

引數名:

引數值:

增加div>引數列表

addpar() ,

delpar(name) ,

vue不能檢測以下陣列的變動

vm.items[indexofitem] = newvalue

vm.items.length = newlength

var vm = new vue(

})vm.items[1] = 'x' // 不是響應性的

vm.items.length = 2 // 不是響應性的

vm.items[indexofitem] = newvue

// 可以採用下面2種方法實現響應式

vue.set(vm.items, indexofitem, newvalue) || vm.$set(vm.items, indexofitem, newvalue)

vm.items.splice(indexofitem, 1, newvalue)

vm.items.length = newlength

// 可以採用下面方法實現響應式

vm.items.splice(newlenght)

Vue中的set 方法

大家在寫vue前後端互動時不知道有沒有碰到過乙個問題,就是在data裡面定義乙個變數,然後從後台獲取資料後賦值給這個變數,但是對這個變數裡的物件的屬性或者陣列的元素進行修改時,發現資料能修改,但檢視不更新!原因 vue管理的變數必須生成了get和set方法,如data中定義的變數,雖然直接通過賦值的...

C 中delete與delete 的區別

當呼叫del etedelete delete 的時候,系統會自動呼叫已分配的物件的析構函式。當我們用new new new 分配的物件是基本資料型別時,用del etedelete delete 和d el ete delete delete 沒有區別。但是,當分配的物件是自定義物件時,二者不能通...

delete與delete 的區別

c 告訴我們在 用 new 分配的單個物件的記憶體空間的時候用 delete,用 new 分配的一組物件的記憶體空間的時候用 delete。很多人注意到了這個問題,但是卻不清楚為什麼要這樣做,不這樣做行不行。關於 new 和 delete,其中又分為兩種情況 1 為基本資料型別分配和 空間 2 為自...