解决el-drawer关闭之后组件内数据没有完全销毁

问题描述: 项目中使用到elementui组件库,在使用el-drawer的时候,里面放置了el-form,el-table和el-cards. 当我点击关闭的后,再次打开抽屉组件,组件中只有el-table中的数据被销毁了,el-form和el-cards中的数据都还存在. 使用的是el-drawer组件自带的属性destory-on-close.

解决方法:

具体也不知道为什么使用该属性之后,没有完全销毁,期待有大佬能帮忙解答.

最终使用的方法是在使用自带属性destory-on-close的同时,  增加关闭事件,在事件中将drawer组件的所有数据重置

<el-drawer
            :title="title"
            :visible.sync="drawerVisible"
            destory-on-close
            @close="handleClose"
>
</el-drawer>
handleClose(){
  Object.assign(this.$data,this.$options.data())
}

小知识:

// 1、重置data中的所有数据
// 无论data中的数据如何改变,使用这句就可以恢复初始数据
Object.assign(this.$data, this.$options.data())
 
// 2、重置data中的某个值
// 只会让指定的这个数据被初始化,不会影响到data里的其他数据
// 用this.$options.data()重置组件data时,data()里用this获取的props或method都为undefined
this.formData = this.$options.data.call(this).formData

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
el-drawer 是一个 Vue.js 组件,用于创建抽屉式的侧边栏。要实现数据回显,可以在 el-drawer 中使用表单组件,将表单的数据绑定到一个对象上,然后在关闭 el-drawer 时,将这个对象的值重置为原始值。 具体实现步骤如下: 1. 在 el-drawer 中使用表单组件,例如 el-form。 2. 将表单的数据绑定到一个对象上,例如 formData。 3. 在打开 el-drawer 时,将 formData 的值设置为需要回显的值。 4. 在关闭 el-drawer 时,将 formData 的值重置为原始值。 示例代码如下: ``` <template> <el-drawer :visible.sync="drawerVisible"> <el-form :model="formData"> <el-form-item label="姓名"> <el-input v-model="formData.name"></el-input> </el-form-item> <el-form-item label="年龄"> <el-input v-model.number="formData.age"></el-input> </el-form-item> </el-form> <div slot="footer"> <el-button @click="resetFormData">取消</el-button> <el-button type="primary" @click="saveFormData">保存</el-button> </div> </el-drawer> </template> <script> export default { data() { return { drawerVisible: false, formData: { name: '', age: 0 }, originalFormData: { name: '', age: 0 } } }, methods: { openDrawer() { // 打开 el-drawer 时,将 formData 的值设置为需要回显的值 this.formData = { name: '张三', age: 18 } this.originalFormData = { ...this.formData } this.drawerVisible = true }, closeDrawer() { // 关闭 el-drawer 时,将 formData 的值重置为原始值 this.formData = { ...this.originalFormData } this.drawerVisible = false }, resetFormData() { // 点击取消按钮时,将 formData 的值重置为原始值 this.formData = { ...this.originalFormData } this.drawerVisible = false }, saveFormData() { // 点击保存按钮时,保存 formData 的值,并关闭 el-drawer // ... this.drawerVisible = false } } } </script> ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值