解决elementUI中el-form、el-dialog、数据回显同时用时,有bug

提示:记录学习elementUI时遇到的一些问题及解决办法


前言

现象: 第一次打开网页,先点击修改,再点击新增,发现输入框竟然有值
原因: 点击修改后,关闭对话框的时候,置空失效了
分析: 主人公resetFields有问题
线索1: Dialog 的内容是懒渲染的,即在第一次被打开之前,传入的默认 slot不会被渲染到 DOM 上
线索2: vue数据改变(先执行同步所有)再去更新DOM(异步代码)
无问题操作: 第一次打开网页,先点击新增按钮 -> dialog出现 -> el-form组件第一次挂载(关联的addForm对象的属性的值为空字符串) el-form组件内绑定了初始值,所以后续调用resetFields的时候,它可以用到空字符串初始值来重置
有问题: 第一次打开网页,先点击修改按钮 -> 虽然dialog变量为true了但是同步代码把addForm对象里赋值了(默认值) -> DON更新异步 -> dialog出现 -> el-form组件第一次挂载(使用addForm内置做回显然后第一次el-fonm内绑定了初始值(有值)) -> 以后做重置,它就用绑定的带值的做重置


按照1、2、3的顺序操作出现 bug ,图片展示:
在这里插入图片描述
按照1、2、3的顺序,在第二步、 第三步 操作时出现的图片,(设计时,是要点击第三步的地方是提出的框的数据清空,按照上面的步骤操作出现如下的情况)
在这里插入图片描述
按照1、3、2、3的顺序出现如下情况(这是正确的情况,我们要解决上面那种情况)
在这里插入图片描述

错误时的代码(主要看article.vue 的代码)

  1. request.js 的代码
import axios from 'axios'
const baseURL = 'xxxxxx'
const myAxios = axios.create({
   
// 基地址
  baseURL
})

// 导出 axios 自定义函数
export default myAxios
  1. api.js 的代码
/**
 * 获取-文章分类
 * @returns {*}
 */
const getArtCateListAPI = () => {
   
  return request({
   
    url: '/my/cate/list'
  })
}

/**
 * 添加-文章的分类
 * @param cate_name  cate_name:文章分类名
 * @param cate_alias  cate_alias:文章分类别名
 * @returns {*}
 */
const addArtCateAPI = ({
    cate_name, cate_alias}) => {
   
  return request({
   
    url: 'my/cate/add',
    method: 'POST',
    data: {
   
      cate_name,
      cate_alias
    }
  })
}

/**
 * 更新-文章分类
 * @param id  文章分类id
 * @param cate_name  文章分类名
 * @param cate_alias  文章分类别名
 * @returns {*}
 */
const updateArtCateAPI = ({
    id, cate_name, cate_alias}) => {
   
  return request({
   
    url: '/my/cate/info',
    method: 'put',
    data: {
   
      id,
      cate_name,
      cate_alias
    }
  })
}

// 导出接口
export {
   
addArtCateAPI,
getArtCateListAPI,
updateArtCateAPI
}

  1. article.vue 代码
<template>
  <div>
    <!-- 预览文章 -->
    <el-card class="box-card">
      <div slot="header" class="clearfix header-box">
        <span>
  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Element UI是一套基于Vue.js的组件库,其el-dialog是其的一个组件,用于实现弹窗对话框的功能。下面是关于el-dialog的使用介绍: 1. 引入Element UI库:在Vue项目,首先需要引入Element UI库。可以通过npm安装,然后在项目的入口文件引入Element UI的样式和组件。 2. 使用el-dialog组件:在需要使用弹窗对话框的地方,可以使用el-dialog组件进行布局和交互。以下是el-dialog的基本用法: ```html <template> <div> <el-button @click="showDialog">打开对话框</el-button> <el-dialog :visible.sync="dialogVisible" title="对话框标题"> <p>对话框内容</p> <span slot="footer" class="dialog-footer"> <el-button @click="dialogVisible = false">取 消</el-button> <el-button type="primary" @click="dialogVisible = false">确 定</el-button> </span> </el-dialog> </div> </template> <script> export default { data() { return { dialogVisible: false }; }, methods: { showDialog() { this.dialogVisible = true; } } }; </script> ``` 在上述代码,通过点击按钮打开对话框,使用`:visible.sync`绑定`dialogVisible`变量控制对话框的显示与隐藏。`title`属性设置对话框的标题,`slot="footer"`用于自定义对话框的底部按钮。 3. 自定义对话框内容:可以在el-dialog组件内部编写自定义的对话框内容,可以是文本、表单、图片等任意HTML元素。 4. 更多配置选项:el-dialog还提供了一些其他的配置选项,如`width`设置对话框的宽度,`modal`设置是否显示遮罩层等。可以根据实际需求进行配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿超学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值