Vue3+Element Plus 关于Dialog弹出Form表单,使用resetFields重置无效的解决

主要参考了element-plus官方的表单重置按钮(官方Form例子任意reset按钮),然后试了试他的ref绑定,发现可以完美解决重置问题。

第一步:给Form表单绑定ref。绑定ref 的值为ref<FormInstance>();这里注意表单el-form-item必须有prop属性。

    <el-dialog v-model="data.userDialog" v-bind:title="data.userModelTitle">
      <el-form
        :inline="true"
        ref="modelForm"
        :model="data.user"
        label-position="right"
      >
        <el-form-item label="工号" label-width="70px" prop="userCode">
          <el-input v-model="data.user.userCode" />
        </el-form-item>
        <el-form-item label="姓名" label-width="70px" prop="userNameCn">
          <el-input v-model="data.user.userNameCn" />
        </el-form-item>
        <el-form-item label="手机号" label-width="70px" prop="phone">
          <el-input v-model="data.user.phone" />
        </el-form-item>
        <el-form-item label="部门" label-width="70px" prop="deptId">
          <el-cascader
            v-model="data.user.deptId"
            ref="deptCascader_add"
            :options="data.deptTree"
            :props="treeProps"
            @change="deptAddChange"
            filterable
            clearable
            class="select-width"
          />
        </el-form-item>
        <el-form-item label="角色" label-width="70px" prop="roleId">
          <el-select v-model="data.user.roleId" class="select-width">
            <el-option label="员工" :value="2" />
            <el-option label="临时推广员" :value="3" />
          </el-select>
        </el-form-item>
      </el-form>
      <template #footer>
        <span class="dialog-footer">
          <el-button @click="data.userDialog = false">取消</el-button>
          <el-button
            type="primary"
            @click="
              data.dialogSubmitStatus === 'add' ? addUser() : updateUser()
            "
          >
            提交
          </el-button>
        </span>
      </template>
    </el-dialog>
const data = reactive({
  userDialog: ref(false),
  dialogSubmitStatus: "",
  user: {
    id: null,
    userCode: "",
    userNameCn: "",
    deptId: "",
    roleId: null,
    phone: "",
    deptName: "",
    roleName: ""
  },
  userModelTitle: ""
});
const modelForm = ref<FormInstance>();
// 重置表单方法
const restForm = (formEl: FormInstance | undefined) => {
  formEl.resetFields();
};

2.第二步:在你想要重置的地方调用重置表单方法即可。本人是在新增或修改成功后再重置,这个看自己需求就行。具体调用如下:

const addUser = () => {
  console.log("新增:" + data.user);
  restForm(modelForm.value);
};
const updateUser = () => {
  console.log("修改:" + data.user);
  restForm(modelForm.value);
};

有谁知道FormInstance,可以说下。因为我遇到的时候只是为了解决问题,并没有深入了解,如果有错误的地方欢迎指出。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值