一
1.需要給對象添加屬性時,不能采用傳統的obj.屬性=值,obj[屬性]=值 來添加屬性,在vue頁面時需要這樣使用
this.$set(obj,"propertyName","value") 來添加屬性 /* obj 要添加屬性的對象 propertyName 屬性名 value 屬性值 */
2.同理,在修改屬性的時候,在對應的方法中也需要this.$set(obj,"propertyName","value") 來修改屬性屬性
注意:新增,修改必須都寫!!!
這樣頁面就可以動態響應新添加的屬性了
二
1.vue不在data中聲明的對象不是響應式。采用傳統的obj.屬性=值,obj[屬性]=值 來添加屬性的時候會報錯
總結:
Vue不能檢測到對象屬性的添加或刪除,由於Vue在初始化實例時會對屬性執行getter/setter轉化,所以屬性必須在data上才能被執行,這個是響應式的。對於已創建的實例,Vue不允許添加根級別的響應式屬性。
解決方法:
方法一、在data中事先聲明該屬性;
方法二、使用 Vue.set(object, key, value)或 vm.$set(object, key, value) 添加