小程序支付完成后会重新执行app.onShow导致option丢失的问题
发布于 5 年前 作者 wei32 6911 次浏览 来自 问答

现有产品需求是进入小程序必须扫码进入(小程序码里需要携带vin参数以此判断显示内容)

在app.onShow方法里有option参数可以通过option.query.vin拿到然后存储在globalData里。

但是在页面中调起小程序支付功能后会重新执行app.onShow方法,此时app.onShow方法的option参数里是没有携带vin参数的,导致显示内容无法判断。

代码片段如下:

//app.js

onShow(option){

     let op = option;
      //车辆VIN

     if (op.query.scene.vin) {//扫码进来带有vin参数则赋值

         this.globalData.vin = op.query.scene.vin

      }else{//没有vin则提示客户需扫码且清空vin以免下次非扫码进入的时候带有上次扫码进来时缓存的vin
        this.globalData.vin = '';//
}
}

小程序中调起支付后op.query.scene中是没有任何参数的,这时候返回到页面中刷新数据没有vin参数导致内容显示不正确

2 回复

option放在onLoad可以解决问题嘛,一般都是放在onLoad里面。

onShow(option){

    let op = option;

    //车辆VIN

    if (op.query.scene.vin) {// 扫码会进入这里(支付成功后返回不会进入这里)

        //扫码进来带有vin参数则赋值

        this.globalData.vin = op.query.scene.vin;

    } else if (!this.globalData.vin) {// 支付成功后返回也不会进入这里

        // 如果是非扫码进小程序,则会进入这里

        //进入这里,则会提示客户需扫码

    } else {//支付成功后返回,this.globalData.vin还是刚才扫码的vin,所以会进入这里

        //支付完成后续显示问题解决啦

    }

}

回到顶部