vue+QRCode生成二维码+el-dialog弹出显示

1.首先,安装qrcode插件,前端控制台中输入:

cnpm install qrcodejs2 --save
//或者
npm install qrcodejs2 --save

2.js中导入包

import QRCode from 'qrcodejs2'

3.js中添加方法creatQrCode,可自己命名

creatQrCode() {
      var qrcode = new QRCode(this.$refs.qrCodeUrl, {
            text: '', // 需要转换为二维码的内容,这里自己设置
            width: 220,
            height: 220,
            colorDark: '#000000',
            colorLight: '#ffffff',
            correctLevel: QRCode.CorrectLevel.H
        })
    },

4.定义弹窗判定字段

 data(){
    return{

      qrcodeShow: false,

    }
  },

5.el-dialog中添加上存放图片的容器

    <el-dialog v-model = "qrcodeShow" width="270px" title="二维码" center>
      <div class="qrcode" ref="qrCodeUrl"></div>
    </el-dialog>

6.建立一个button,点击button显示弹窗

 <el-button @click="creatQrCode()" style="width:63px;">获取二维码</el-button>

问题:此时点击button就可以弹出二维码了,但是测试发现,第一次点击会出现个bug,没有二维码生成这是因为dialog的qrcodeShow初始状态为false,点击后变为true,而显示二位吗的div使放在Dialog组件中的,第一次点击获取不到div的信息,所以就报了个错。

并且,重复点击会出现多个二维码排列下来,这个是因为上一个二维码没有清除的原因。

这里我使用$nextTick来解决上面的bug问题,并且在获取新的二维码之前清除一下上一个二维码,这里我使用document.getElementById("qrcode").innerHTML = "" 来解决;上代码

showDialog() {
      this.qrcodeShow = true;
        this.$nextTick(()=>{
            let qrcodeI = document.getElementById("qrcode");
            let qrcode = new QRCode(qrcodeI);  
            document.getElementById("qrcode").innerHTML = "";
            this.creatQrCode()
        })  
    },

此时,bug都全部解决啦!

本人小白一个,希望能帮助到大家!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值