在 Vue 中,有一個(gè)名為¥set
的 API 可以用來動(dòng)態(tài)的添加一個(gè)屬性到 data 對(duì)象中。這意味著我們可以動(dòng)態(tài)地給一個(gè)已經(jīng)創(chuàng)建好的 Vue 實(shí)例添加響應(yīng)式的屬性。
¥set
方法接收三個(gè)參數(shù): 對(duì)象,屬性名稱,屬性值。第一個(gè)參數(shù)為需要添加屬性的對(duì)象,第二個(gè)參數(shù)為屬性的名稱,第三個(gè)參數(shù)為屬性的值。
Vue.¥set( object, key, value )
需要注意的是,使用 this.key = value 的方式來添加屬性并不能讓 Vue 將它轉(zhuǎn)換成響應(yīng)式屬性,因?yàn)?Vue 在初始化時(shí)會(huì)對(duì) data 數(shù)據(jù)進(jìn)行代理,只有在實(shí)例化時(shí)存在 data 中的屬性才會(huì)被代理成響應(yīng)式屬性。
那么我們來看一個(gè)示例,假設(shè)我們有以下的一個(gè) Vue 組件:
Vue.component('my-component', {
data: function(){
return {
myObject: {}
}
}
})
現(xiàn)在我們想給myObject
添加一個(gè)名為myKey
的響應(yīng)式屬性,我們可以這樣寫:
Vue.¥set(this.myObject, 'myKey', 'myValue')
通過這種方式添加的屬性,Vue 會(huì)自然地將它轉(zhuǎn)換成響應(yīng)式屬性,并進(jìn)行相應(yīng)的 DOM 更新。