vue 給物件新增屬性

2022-09-15 01:06:19 字數 838 閱讀 5515

根據官方文件定義:如果在例項建立之後新增新的屬性到例項上,它不會觸發檢視更新

當你把乙個普通的 j**ascript 物件傳入 vue 例項作為data選項,vue 將遍歷此物件所有的屬性,並使用object.defineproperty把這些屬性全部轉為 getter/setter。

受現代 j**ascript 的限制 (以及廢棄 object.observe),vue 不能檢測到物件屬性的新增或刪除。由於 vue 會在初始化例項時對屬性執行 getter/setter 轉化過程,所以屬性必須在 data 物件上存在才能讓 vue 轉換它,這樣才能讓它是響應的。

官方定義:

vue 不允許在已經建立的例項上動態新增新的根級響應式屬性 (root-level reactive property)。然而它可以使用 vue.set(object, key, value) 方法將響應屬性新增到巢狀的物件上:

vue.set(vm.obj, 'e', 0)

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

this.$set(this.obj,'e',02)

有時你想向已有物件上新增一些屬性,例如使用 object.assign() 或 _.extend() 方法來新增屬性。但是,新增到物件上的新屬性不會觸發更新。在這種情況下可以建立乙個新的物件,讓它包含原物件的屬性和新的屬性:

// 代替 object.assign(this.obj, )

this.obj= object.assign({}, this.obj, )

Vue 給物件新增屬性

vue 不允許在已經建立的例項上動態新增新的根級響應式屬性 root level reactive property 然而它可以使用 vue.set object,key,value 方法將響應屬性新增到巢狀的物件上 vue.set vm.obj,e 0 您還可以使用 vm.set 例項方法,這也是...

vue給物件動態新增屬性和值

介紹 在vue中請求介面中,乙個請求方法可能對應後台兩個請求介面,所以請求引數就會有所不同。需要我們先設定共同的引數,然後根據條件動態新增引數屬性。let that this let params 區分普通題庫還是模考題庫 let addquestionapi if that.questiontyp...

動態給物件新增屬性和方法

正常情況下,我們定義了乙個class,建立乙個class的例項後,我們可以給該例項繫結任何的屬性和方法,這就是動態語言的靈活性。動態給物件新增屬性和方法 class.屬性名 屬性值 class.方法名 函式 這裡說的動態加屬性和方法主要指的是關於 slots 函式的使用 slots 屬性名,函式名 ...