當我們往data里面追加一個沒有或者刪除一個數據時,視圖並不會更新,受現代 Javascript 的限制, Vue 無法檢測到對象屬性的添加或刪除
Vue 不允許在已經創建的實例上,動態地添加新的根級響應式屬性(root-level reactive property)。然而,可以使用 Vue.set(object, key, value) 方法,將響應式屬性添加到嵌套的對象上。
<p>{{user.age}}</p>
<input type="text" v-model="user.age">
app.user.age = 26
我們現在給user對象添加了一個age,但是我們改變age的時候,發現視圖並沒有跟着改變
現在我們重新設置一下
app.$set(app.user,'age',26)
現在我們再去改變age,發現視圖已經可以跟着改變了
有時,你想要向已經存在的對象上添加一些新的屬性,例如使用 Object.assign() 或 _.extend() 方法
在這種情況下,應該創建一個新的對象,這個對象同時具有兩個對象的所有屬性
Object.assign(app.user, {
age: 27,
favoriteColor: 'Vue Green'
})
可以通過如下方式,添加新的響應式屬性
app.user = Object.assign({}, app.user, {
age: 27,
favoriteColor: 'Vue Green'
})