問題:
當使用使用this.$refs[‘form’].resetFields()方法重置表單時,幾個問題整理如下:
問題1:
用法不對
問題2:
在還沒有顯示對話框之前就調用this.$refs[‘form’].resetFields(),會報錯。
問題3:
如果添加和修改共用一個表單時就會出現重置無效的情況。
解決方法:
問題一:
要想this.$refs[‘form’].resetFields()方法有效,必須配置el-form :model 屬性和el-form-item中的prop屬性,才可以。
問題二:
this.$nextTick(() => {
this.$refs['form'].resetFields();
});
問題三:
將為表單對象賦值的操作放在對話框顯示之後的一個執行周期執行。
this.$nextTick(() => {
// utils.copyFormObject(data, this.form);
this.form = JSON.parse(JSON.stringify(row));
});
思考:為什麽要放在$nextTick()中就可以了??
this.$refs[‘form’].resetFields()這個做法其實是重置表單到初始值,不是清空表單,當表單第一次在頁面中渲染時所用的數據就是初始數據,如果修改對象的表單賦值沒有放在nextTick中,就會在表單渲染時就會將這個修改對象作為初始值,所以出現無效了。使用nextTick保證表單在第一次渲染時是空值就可以了。
轉載請注明來源,歡迎對文章中的引用來源進行考證,歡迎指出任何有錯誤或不夠清晰的表達。可以郵件至 b8954008@gmail.com