el-dialog关闭后重置数据方法、注意事项

本文探讨了在Vue.js项目中使用Element UI的el-dialog组件时,如何在关闭未保存且表单有修改的情况下重置数据,避免数据污染。解决方案是通过中间变量实现数据深复制,确保多个节点编辑时的独立性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 需求

在使用element的对话框el-dialog过程中,需求需要el-dialog在没有保存并且输入框发生修改的情况下,在关闭窗口的时候将el-dialog中的el-form表单数据进行重置。

2. 遇到的坑

一开始,管它三七二十一,直接在el-dialog关闭的时候对表单进行重置,但是进过我测试发现存在以下问题(项目中我是同类节点使用同一个表单):

  • 第一次在点击一个节点进行编辑时候没有保存el-dialog,这时候表单进行了重置(但是第一次怎么重置你都看不出变化),但是第二次点击另一个节点进行编辑,这时候没有保存的情况下关闭el-dialog,那么第二次的这个节点的数据将会被重置为第一次点击那个节点的数据(因为共用同一个表单,这样重置会造成数据的污染)

第一次点击的对话框数据(然后将其取消关闭不进行保存):
在这里插入图片描述
第二次点击的对话框数据(还是将其取消关闭不进行保存):
在这里插入图片描述
这时候查看第二次点击的对话框对应

<template> <div class="app-container"> <!-- 操作工具栏 --> <div class="mb-4"> <el-button type="primary" @click="showFormDialog()">新增分类</el-button> </div> <!-- 树形表格 --> <el-table :data="tableData" row-key="id" :tree-props="{children: 'children'}" border style="width: 100%" > <el-table-column prop="id" label="ID" width="80"> <template #default=“{ row }”> <template v-if=“row.children && row.children.length > 0”> {{ row.id }} </template> <span v-else class=“empty-id”></span> </template> </el-table-column> <el-table-column prop=“title” label=“分类名称” /> <el-table-column label=“操作” width=“180” align=“center”> <template #default=“{ row }”> <el-button type=“primary” size=“small” @click=“showFormDialog(row.id)” >修改</el-button> <el-button type=“danger” size=“small” @click=“handleDelete(row.id)” >删除</el-button> </template> </el-table-column> </el-table> <!-- 表单对话框 --> <el-dialog v-model="formVisible" :title="currentId ? '修改分类' : '新增分类'" width="30%" > <el-form ref="formRef" :model="form" :rules="rules" label-width="80px" > <el-form-item label="分类名称" prop="title"> <el-input v-model="form.title" placeholder="请输入分类名称" /> </el-form-item> </el-form> <template #footer> <el-button @click="formVisible = false">取消</el-button> <el-button type="primary" @click="submitForm">确认</el-button> </template> </el-dialog> </div> </template>要求点击新增分类时弹出的对话框里再加一个上级选择,用select树形结构数据展示,给出vue3的全部代码
最新发布
03-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值