解决 element-ui 表单清空的问题:先编辑后新增 resetFields() 无效

解决 element-ui 表单清空的问题:先编辑后新增 resetFields 无效


前言

首先需要注意几个问题:

  1. 我们需要为每个 form-item 加上 prop 属性,要不然无法清空(大部分的问题就是出在这)
  2. resetFields() 方法是重置表单,重置为初始值,而不是设置为空值
  3. 在 resetFields() 方法之前,如果修改了 data 里的表单默认值,那么重置以后就是你修改以后的值,而不是 data 里的值了

一、问题

1、页面有个新增和编辑共用的弹出框,在页面初始化后先点新增,后编辑,可以重置 form。
2、先编辑,后新增使用 resetFields() 表单数据没有清空。

二、原因和解决方法

1. 原因

1、当我们先新增再编辑,初始值是空的,调用 resetFields() 方法自然正常。
2、当我们先编辑再新增,会对表单赋值,初始值就是我们赋的值,调用 resetFields() 方法,表单里还有之前赋的值,并不是我们希望得到的清空表单。

2. 解决方法

在编辑时,弹出框中的表单我们先让他初始化结束再赋值,使用 $nextTick 执行赋值。

代码如下(示例):

handleEdit(row) {
  this.addAndEditDialogShow = true;
  this.dialogTitle = '编辑';

  // 解决表单重置不成功的问题
  this.$nextTick(() => {
    this.formData = {
      id: row.id,
      taskCode: row.taskCode,
      fullName: row.fullName,
      priority: row.priority,
      taskType: row.taskType,
      robotId: row.robotId,
      starTtime: row.starTtime
    };
  });
},

总结

在这里插入图片描述

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用Element UI清空表单的方法: 1. 在Vue组件中引入Element UI库和表单验证插件: ```javascript import { Message } from 'element-ui' import { mapActions } from 'vuex' import { validate } from '@/utils/validate' ``` 2. 在data中定义表单数据和表单验证规则: ```javascript data() { return { formData: { name: '', age: '', email: '' }, rules: { name: [ { required: true, message: '请输入姓名', trigger: 'blur' } ], age: [ { required: true, message: '请输入年龄', trigger: 'blur' }, { type: 'number', message: '年龄必须为数字值' } ], email: [ { required: true, message: '请输入邮箱', trigger: 'blur' }, { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] } ] } } }, ``` 3. 在表单中使用Element UI的el-form和el-form-item组件,并绑定表单数据和验证规则: ```html <el-form :model="formData" :rules="rules" ref="form" label-width="80px"> <el-form-item label="姓名" prop="name"> <el-input v-model="formData.name"></el-input> </el-form-item> <el-form-item label="年龄" prop="age"> <el-input v-model.number="formData.age"></el-input> </el-form-item> <el-form-item label="邮箱" prop="email"> <el-input v-model="formData.email"></el-input> </el-form-item> </el-form> ``` 4. 在表单中添加清空按钮,并绑定清空表单的方法: ```html <el-button type="primary" @click="submitForm('form')">提交</el-button> <el-button @click="resetForm('form')">重置</el-button> ``` 5. 在Vue组件中定义清空表单的方法: ```javascript methods: { ...mapActions(['addUser']), submitForm(formName) { this.$refs[formName].validate(valid => { if (valid) { this.addUser(this.formData) this.resetForm(formName) Message.success('添加成功') } else { Message.error('表单验证失败') return false } }) }, resetForm(formName) { this.$refs[formName].resetFields() } } ``` 以上就是使用Element UI清空表单的方法。在表单中添加一个重置按钮,并绑定清空表单的方法即可实现清空表单的功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值