vue 改變data內的數據 但是視圖沒有改變的三種解決方法


在vue中,data里面的數據改變了,試圖卻沒有更新,常見的情況是

1、直接通過數組下標來修改數據,如:this.arr[i] =‘ll’
2、當你想置空數組時,this.arr.length = 0 || this.arr = [ ]
3、對象的值修改,例如:this.obj.batchName == 1
原因是

Vue2.+ 中data數據對象是通過Object.defineProerty來進行數據的雙向數據綁定,

而數組則是監聽數組的push和pop等操作數組的方法進行雙向綁定的,

因此當是通過下標來修改時便不能更新視圖

異步隊列更新dom導致的視圖不更新,因為默認情況下,vuejs 是異步執行 dom 更新操作的。

在下一個 tick 來臨之前,vuejs 會收集數據變化,置於一個隊列之中,下個 tick 來臨之時,批量執行這些更新,並清空隊列。

雖然大部分情況下我們不需要關心這個更新 dom 機制,但是當下一步操作與之有關聯時,我們就只能使用 nextTick 來解決了。

即下一個數據的頁面更新,依賴與上一個數據的頁面更新完成時,才需要使用this.nextTick()來解決

解決的方法有三種 我最常用的是this.$set()方法:

this.set(this.arr,‘2’,’‘testStr’’) 即this.$set(obj,key,val)

代碼示例:

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM