父組件table,子組件dialog,為了保證dialog中數據變化,不影響父組件的顯示,(為什么會有影響,主要賦值的時候,直接使用“=”的話,對象的引用地址是一樣的,所以當dialog變化時,盡快沒有保存,但還是會影響table中數據的顯示)需要在父組件中,給子組件的傳的值進行轉換
this.data= JSON.parse(JSON.stringify(row));
子組件中也需要使用watch進行監聽,重新賦值
watch: { data(val, oldVal){ this.form = val }, }
關於檢驗清空的問題出現的原因是:我們在每次新增數據的時候,盡管數據可能都是必填的,但是我們一打開彈窗的時候,還是希望沒有檢驗的,當我們change的時候,再進行數據的檢驗。而由於我們大部分的時候,編輯的彈窗和新增的彈窗都是同一個,這導致我們在操作完編輯彈窗,在點擊新增彈窗的時候,發現數據都進行了檢驗,其實這個時候是不需要的。
對於這個問題,我的處理方法是,每次關閉彈窗的時候,清空彈窗中的數據,沒有打開彈窗的時候,清空校驗規則
// 父組件 操作彈窗的時候,清空檢驗規則 this.$refs.child.clearValidate(); //子組件 每次關閉的時候,數據清空 //清空校驗的方法 clearValidate() { if(this.$refs.form) { this.$refs.form.clearValidate(); } }, //清空數據 this.form = {}