elementui-清除弹框中表单的默认值-resetFields()

当弹框(dialog)中含有表单,要进行编辑、查看、新增操作,需要复用弹框,会涉及到清空表单数据。

elementui官网中dialog部分有这么一句话:
Dialog 的内容是懒渲染的,即在第一次被打开之前,传入的默认 slot 不会被渲染到 DOM 上。因此,如果需要执行 DOM 操作,或通过 ref 获取相应组件,请在 open 事件回调中进行。

这里会遇到一个问题,先进行编辑再新增,使用this.$refs[formName].resetFields();没有效果。
原因大概是因为,resetFields()方法只是将表单赋为初始值,表单的初始值是在mounted中赋给dom,也就是第一次渲染的时候。因此如果第一次是编辑,我将回显的信息赋值给表单,它就会认为这是初始值,所以不论怎么调用都会有种reset无效的感觉。

解决办法:在dialog的open中清空表单。 ps: 请注意this.$nextTick

//-------------------html
<el-dialog 
  :title="dialogTitle" 
  :visible.sync="dialogShow" 
  @open="openFun">
	  <el-form 
	  :model="formData" 
	  :rules="$rules.common" 
	  ref="theForm"
	  label-width="100px">
	  //...
	  </el-form>
</el-dialog>

//------------js---methods
openFun(formName,type,data){//弹框回调
  this.$nextTick(() => {
   if(this.$refs[formName]){
    this.$refs[formName].resetFields();
   }
    switch(type){//1:查看,2:编辑,3:新增
      case '1':this.dialogTitle='查看';this.formData= data;break;
      case '2':this.dialogTitle='编辑';this.formData= data;break;
      case '3':this.dialogTitle='添加';break;
      default:break;
    }
  });
},
//员工添加、编辑、修改 按钮
dialogBtn_em(formName,type,data){
 this.dialogShow=true;
 //此处最好声明一个新的变量来接收数据去赋值弹框,避免影响源数据
 let opt = Object.assign({},data)
 this.openFun(formName,type,opt)
},

------end-------

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
可以使用 vue-element 的 Dialog 组件和 Form 组件相结合来实现框和表的组合。具体步骤如下: 1. 在框中使用 Form 组件,将表项放在 Form 组件中。 2. 在框中添加确定和取消按钮,确定按钮绑定一个方法,用来提交表数据;取消按钮绑定一个方法,用来关闭框。 3. 在确定按钮的方法中,调用 Form 组件的 validate 方法来校验表数据,如果校验通过则提交表数据并关闭框,否则不做任何操作。 示例代码如下: ```html <template> <el-dialog :visible.sync="dialogVisible" title="框标题"> <el-form :model="form" :rules="rules" ref="form"> <el-form-item label="表项1" prop="item1"> <el-input v-model="form.item1"></el-input> </el-form-item> <el-form-item label="表项2" prop="item2"> <el-input v-model="form.item2"></el-input> </el-form-item> </el-form> <div slot="footer"> <el-button @click="dialogVisible = false">取消</el-button> <el-button type="primary" @click="submitForm">确定</el-button> </div> </el-dialog> </template> <script> export default { data() { return { dialogVisible: false, form: { item1: '', item2: '' }, rules: { item1: [{ required: true, message: '请输入表项1', trigger: 'blur' }], item2: [{ required: true, message: '请输入表项2', trigger: 'blur' }] } } }, methods: { submitForm() { this.$refs.form.validate(valid => { if (valid) { // 提交表数据 // ... // 关闭框 this.dialogVisible = false } }) } } } </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值