接上一篇:【一】vue中动态生成二维码
上一篇遗留的问题是:
渲染出来的是table点块(原谅我眼瞎,这个问题是我帮别人解决问题给做的demo并没有细看),导致后面有一个功能:长安图片保存到本地,或者长按识别不了。
正确的姿势是:渲染成canvas,通过canvas的方法toDataURL生成base64的路径赋值给img标签就可以展示了!
还有两个问题我提醒一下孩子们:
1,如果二维码是在弹框中,
this.$nextTick (function () {
this.getCode();
});
是要写在弹框执行的里面的。
2,toDataURL是在确保页面渲染出canvas之后才能用的,所以你可能需要一个promise语法去保证。好了,最终的解决方案如下(请忽略我的命名及一些规范性的东西,时间紧,多人合作,没法去改别人的命名):
A.html
B.canvas二维码的渲染
getCode(){
var p =new Promise(function(resovle, reject){
var date = new Date().getTime();//二维码后面加个时间戳,避免缓存
var qrcode = $("#code").qrcode({
render: "canvas