鍍金池/ 問答/HTML/ vue組件里改變對象的屬性,視圖不刷新的問題

vue組件里改變對象的屬性,視圖不刷新的問題

在vue的data數(shù)據(jù)中心定義一個對象collocateval,然后在觸發(fā)事件時給collocateval添加或修改屬性的時候,頁面中的視圖不會同步更新,只有當其他數(shù)據(jù)發(fā)生改變時,視圖才會同步更新數(shù)據(jù)
代碼如下:

clipboard.png
用了vue.set感覺也沒有用啊。

clipboard.png
還是只有當其他數(shù)據(jù)發(fā)生改變時,視圖才會同步更新數(shù)據(jù)。
明明也有引入vue實例啊
clipboard.png
是不是在組件里寫法不對,求大神告知。

回答
編輯回答
墨小白

Vue 基于 Object.defineProperty,通過把屬性替換成 getter/setter 來實現(xiàn)近乎無痛的狀態(tài)偵聽。這個過程在組件初始化時進行,所有你定義的變量的屬性,都被替換了。

所以如果你在實例化完成后在賦值,就真的只是賦值,而不是調(diào)用 setter,所以就會失去響應式。

解決方案是使用 Vue.set,或者賦值整個對象。

2017年11月9日 07:08
編輯回答
涼薄
this.collocateval = {state: 1}
2017年2月26日 06:07