鍍金池/ 問(wèn)答/HTML/ vue computed 修改后視圖上顯示沒(méi)有刷新

vue computed 修改后視圖上顯示沒(méi)有刷新

鏈接描述

點(diǎn)擊編輯以后,newTodos 數(shù)據(jù)已經(jīng)變了,但是界面上的顯示還是老的,沒(méi)有出現(xiàn)保存按鈕。

回答
編輯回答
撿肥皂

item.is_edit = false
直接定義新的屬性 監(jiān)聽(tīng)不到
用$set

2017年2月8日 08:54
編輯回答
萢萢糖

你需要在set里面進(jìn)行操作,并不能直接改變newTodos的值,它的值是通過(guò)get得來(lái)的;


computed 中,你一直是通過(guò)get獲取數(shù)據(jù)的,但你根本沒(méi)有改變里面todos的值;就像下面回答的使用computed 姿勢(shì)不對(duì)

2017年6月22日 02:09
編輯回答
陌璃

大概看了一下代碼,你這個(gè)使用 computed 的姿勢(shì)不對(duì),computed 一般是用來(lái)做 vm 的屬性的 getter 來(lái)用的,你在 edit 中直接修改 newTodos 是一種反模式,無(wú)法享受 vue 具有的響應(yīng)式特性。

正確的做法是應(yīng)該在 edit 直接更改 this.todos 就可以了,依賴于 this.todos 的 newTodos 會(huì)因?yàn)轫憫?yīng)式的關(guān)系自動(dòng)變化。

而且還有其他的問(wèn)題,一般 vue 的 vm 上的屬性最好一次性都聲明完,并附帶默認(rèn)值,之后如果非要添加新屬性的話,使用 Vue.set 來(lái)完成而不是直接賦值。

2017年10月13日 20:47