給vue的數據添加新屬性後實時響應失效問題

for(var i in data){
//data[i]["isShow"] = true;
app.$data.testData.push(data[i]);
app.$data.testData[i]["isShow"]= true;
//app.$set(app.$data.testData[i],"isShow","true")
console.log(app.$data.testData);
}

該處代碼的屬性“isShow”在頁面是不會實時響應的,昨天剛遇到這個問題,突然發現頁面v-if綁定的“isShow”沒響應了,然後開始找原因,定位到問題是當在上面循環中先將isShow屬性添加到返回數據data上就不會出現這個問題了,這時候想到肯定使這2個操作導致最後的app.$data.testData不一樣,在瀏覽器打印發現:

app.$data.testData.push(data[i]);
app.$data.testData[i]["isShow"]= true;下,isShow屬性沒有get和set方法


data[i]["isShow"] = true;
app.$data.testData.push(data[i]);

下,瀏覽器打印:


說明屬性的響應需要有這2個方法存在。

用$set添加屬性方法:

app.$set(app.$data響應.testData[i],"isShow","true") //(data,key,value)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章