获取element-ui的dialog中元素为null的问题

11 篇文章 0 订阅

在打开弹窗的时候操作DOM,发现获取DOM为null

问题

在这里插入图片描述
如上图所示,在打开弹窗的时候,需要给按钮添加监听事件,上传文件
代码如下

 getFileMD5() {
      const el = document.getElementById("upload-file");
      const bmf = new BMF();
      el.addEventListener(
        "change",
        e => {
          const file = e.target.files[0];
          this.fileInfo.name = file.name;
          this.fileInfo.size = file.size;
          bmf.md5(
            file,
            (err, md5) => {
              this.fileInfo.MD5 = md5;
              console.log(this.fileInfo);
              //上传
              this.postFileHttp(this.fileInfo)
                .then(() => {
                  this.$refs.upload.submit();
                })
                .catch(err => {
                  alert("上传失败" + err.message);
                });
            },
            () => {}
          );
        },
        false
      );
    },

一开始是把控制dialog的变量isFirmwareAddShow放到watch中,只要isFirmwareAddShowtrue的时候,执行getFileMD5函数,结果第一次获取upload-file为空

原因

isFirmwareAddShowtrue的时候,DOM并没有渲染完成

解决方法

el-dialog中增加@opened="getFileMD5"事件
官网说明:

事件名称说明回调参数
openDialog 打开的回调
openedDialog 打开动画结束时的回调
closeDialog 关闭的回调
closedDialog 关闭动画结束时的回调
<el-dialog
      title="添加固件"
      :visible.sync="isFirmwareAddShow"
      width="30%"
      :before-close="closeForm"
      @opened="getFileMD5"
    >
    ...
 </el-dialog>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值