this.$refs[value].resetFields()
這個函數是用來初始化操作的,只是重置為初始值,並不是清空每個表單字段;重置的為mounted時候的值。
初始值實在created時候確定的,如果在created的時候賦值,那么以后重置均為該初始值字段;
在表單編輯時需要打開表單對其賦值,那么該賦值行為在created時進行的,那么以后賦值均為該初始值;
解決方法:
this$nextTick():在下次 DOM 更新循環結束之后執行延遲回調。在修改數據之后立即使用這個方法,獲取更新后的 DOM。
數據發生變化后要執行某個操作,DOM並不會馬上更新,而是在異步隊列被清除時才會進行更新,此時要等待數據變化后Vue更新Dom才能進行操作。
比如:
在表單的編輯和新增Dialog,當我們新增和編輯公用一個頁面,通過watch來監聽表單數據的賦值,那么當點新增,再點擊編輯是不會出現問題的,但是!!!當點擊編輯再點擊新增時,點擊重置this.$refs[value].resetFields(),奇怪的現象出現了! 數據初始為第一次點擊編輯的表單數據;
解決方法:在子組件的watch監聽方法內的賦值操作放在this$nextTick()內部。