在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)
代碼示例:


