今天遇到一個(gè)問題,循環(huán)出來的textarea綁定了object中的一個(gè)markText(string)值维雇,但是,在textarea中輸入后,textarea中沒有內(nèi)容
data中聲明暂氯,因?yàn)槭莿?dòng)態(tài)的,所以在data中沒有寫object的具體屬性
data:{
questionMarkMap:{}
}
在mounted中的----原始寫法----:
for(let idx=0;idx<xxx.length;idx++){
_this.questionMarkMap[''+(idx+1)] = {
"markAudio": "",
"markImgList": [],
"markScoreMap": {"1": 0,},
"markText":""
};
}
------解決方法------:
for(let idx=0;idx<xxx.length;idx++){
_this.$set(_this.questionMarkMap,''+(idx+1),{
"markAudio": "",
"markImgList": [],
"markScoreMap": {"1": 0,},
"markText":""
});
}
解釋
由于 Vue 會(huì)在初始化實(shí)例時(shí)對(duì)屬性執(zhí)行 getter/setter 轉(zhuǎn)化過程亮蛔,所以屬性必須在 data 對(duì)象上存在才能讓 Vue 實(shí)時(shí)更新痴施,eg
var vm = new Vue({
data:{
obj:{a:1}
}
})
// `vm.a` 是響應(yīng)的
vm.b = 2
// `vm.b` 是非響應(yīng)的
- 解決方案,使用 Vue.set(object, key, value) 究流,以下兩種方式都可以辣吃,我用的是第二個(gè)$set
- Vue.set(vm.obj, 'b', 2)
- this.$set(this.obj,'b',2)