今一個圖片列表的數組,在新增數據時頁面會同步相應,但是進行刪除操作時老是無法實現頁面及時刷新,使用過vue set也沒見效果,糾結半天,哎原來是嵌套對象的坑
一、圖片上傳時
頁面加的圖片列表的html
這裏是一個方法調用接口獲取一些返現的數據 賦值給ruleForm
,其中dataImages
是一個保存圖片的數組對象
下面就是頁面返現圖片或者上傳,刪除操作
而就是在這個進行刪除的操作時發現了刪除完 dataImages
中的數據,頁面沒有刷新的問題
試過許多辦法無果,最後還是在看console中發現了端倪
1、第一種在刪除dataImages
後console.log(this.ruleForm.dataImages)
2、第二種在刪除dataImages
後console.log(this.ruleForm.dataImages)
看上面都是進行dataImages
對象的splice
後console後的結果,有啥不一樣嗎
其實很不相同(一個被觀察一個沒有)
看到這裏終於,醒悟了,原來是data
中這裏只寫了一個ruleForm
而他的子元素dataImages
並未寫進去
到這裏問題水落石出,解決方法自然不用說了
修改刪除方法 再次執行操作
ok 執行完刪除操作頁面同步更新了
二、圖片返現時
上面圖片上傳問題解決了但是這裏發現圖片再次返現又是一個問題
看這個返現後的圖片刪除操作又出現了同樣的問題
這個是請求後臺接口獲得了數據,將其賦值給了臨時變量tempProjImages
, 可以覺得這個參數錯誤了是吧,no並不是,這裏重新定義一個參數是爲了解決另一個問題
瞧
這是保存時發生異常後圖片重新加載了一堆異常image
why?
來看一個save 方法就明白了
似乎明白了些
好了,再回到上面那個問題,其實這裏是引用對象,內存地址修改的問題
看這裏,這是fetchData
方法在初始化rulForm
雖然在data 中定義了tempProjImages
在vue 初始化的時候該值會被觀察起來,然而在後來將其引用地址
重新指定到了另一個對象,觀察也就無效了
於是最後使用set 爲ruleForm
添加一個響應式對象tempProjImages
整體修改如下
問題解決,記錄下菜菜的經歷,希望大神勿噴