前提条件:
期待される結果:
プロジェクト内にコード スキャン機能を追加しました。QR コード ルールはプロジェクトの外部でも設定されます。コードをスキャンした後、ミニ プログラム内にジャンプし、対応する結果ページにジャンプできます。
実績:
WeChat からミニ プログラムにスキャンして、初めて結果ページにジャンプしました。その後、アプレット内で QR コード スキャン機能がオンになりましたが、QR コード スキャン操作は実行されず、QR コード スキャン ツールが開かれただけでした。戻るときは、最後のスキャン結果ページに再度アクセスします。
理由:
アプリシーン値 1001 は、QR コードをスキャンするシーン値です。内部コード スキャンと外部コード スキャンのシーン値は両方とも 1011 です。監視した e.query の値はまだ元の値です。つまり、更新または削除操作はありません。WeChat関係者は、内部コードスキャンと外部コードスキャンのシーン値を区別していません。
解決:
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 およびメソッドと同じレベルにあるグローバル変数を忘れずに定義してください。
globalData: {
isScanFail: false,
},
//和method同级
お役に立てたら、少しハートをいただけませんか~