表單的resetFileds函數重置為初始值而非清空數據


this.$refs[value].resetFields()

這個函數是用來初始化操作的,只是重置為初始值,並不是清空每個表單字段;重置的為mounted時候的值。

初始值實在created時候確定的,如果在created的時候賦值,那么以后重置均為該初始值字段;

在表單編輯時需要打開表單對其賦值,那么該賦值行為在created時進行的,那么以后賦值均為該初始值;

解決方法:

this$nextTick():在下次 DOM 更新循環結束之后執行延遲回調。在修改數據之后立即使用這個方法,獲取更新后的 DOM。

數據發生變化后要執行某個操作,DOM並不會馬上更新,而是在異步隊列被清除時才會進行更新,此時要等待數據變化后Vue更新Dom才能進行操作。

比如:

在表單的編輯和新增Dialog,當我們新增和編輯公用一個頁面,通過watch來監聽表單數據的賦值,那么當點新增,再點擊編輯是不會出現問題的,但是!!!當點擊編輯再點擊新增時,點擊重置this.$refs[value].resetFields(),奇怪的現象出現了! 數據初始為第一次點擊編輯的表單數據;

 

解決方法:在子組件的watch監聽方法內的賦值操作放在this$nextTick()內部。

 


免責聲明!

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



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