记一次关于二维码分享踩坑

前提条件:

预期结果:

我在项目内部加了一个扫码功能,项目外部也会配置二维码规则,可以跳转到小程序内部,扫码后跳到对应结果页面。

实际结果:

我从微信扫一扫进入小程序,第一次跳到结果页面。然后从小程序内部再打开扫码功能,但是没有进行扫码操作,只是打开了扫码工具。返回时,会再一次进入上一次扫码结果页。

原因:

App场景值 1001,为扫描二维码的场景值。内部扫码和外部扫码的场景值都是1011,我监听到的e.query里的值还是原来的值,也就是没有进行更新和删除的操作。微信官方没有对内部扫码和外部扫码的场景值进行区分。

解决方案:

使用getApp().globalData.isScanFail=true进行一个全局变量的定义,在内部扫码scanCode的complete或者fail中添加全局变量,然后app.vue监听的时候加入判断,如果有这值,则不会再次进入结果页。

内部扫码 scanCode.vue:

      uni.scanCode({
        onlyFromCamera: false,
        success: function (res) {
          console.log('条码类型:' + res.scanType);
          console.log('条码内容:' + res.result);
          base.joinscan(res.result);
        },
        complete: function (res) {
          uni.showLoading({
            title: '识别中...',
          });
          setTimeout(function () {
            uni.hideLoading();
          }, 2000);
        },
        fail: function (res) {
        //添加扫码失败监听全局变量
          getApp().globalData.isScanFail = true;
          setTimeout(function () {
            uni.hideLoading();
          }, 2000);
        },
      });

 

外部扫码监听app.vue

        console.log('跳到扫码失败页面', res.message);
          // 获取当前路由,已经处于扫码失败页面,跳过此处判断
          let datat = {
            message: res.message,
          };
            //判断全局变量,扫码失败监听结果判断
          if(this.globalData.isScanFail) {
            this.flagtarget('pages/home/home', {});
          } else {
          this.flagtarget('pages/scanFaceTag/scanFail', datat);
          }

记得要在app.vue里进行全局变量定义,和onload,method同级呦!


  globalData: {
    isScanFail: false,
  },
//和method同级

 


 

如果有帮助到你,可以给我一颗小心心吗~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值