vue调起微信扫一扫,两个注意的点
1、url必须是不带参的地址栏,如果传了带参数的地址url有可能会出现安卓机能调,苹果机报错或者安卓和苹果都报错
2、this指代问题在vx.ready等等方法里面此时的this指代的并不是vue实例,此时就应该在方法开头赋值一个对象为vue实例了
onScan(){ const _this = this this.$axios .get("你的后台地址", { params: { url: location.href.split("#")[0]//你的不带参的当前页url } }) .then(response => { let res = response.data; wx.config({ debug: false, appId: res.data.jsSdkUiPackage.appId, timestamp: res.data.jsSdkUiPackage.timestamp, nonceStr: res.data.jsSdkUiPackage.nonceStr, signature: res.data.jsSdkUiPackage.signature, jsApiList: ["scanQRCode"] }); }); wx.error(function (res) { Dialog.alert({ title: "提示", message: res.errMsg }).then(() => {}); }); wx.ready(function () { wx.checkJsApi({ jsApiList: ['scanQRCode'], success: function (res) { } }); wx.scanQRCode({ needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果, scanType: ["qrCode"], // 可以指定扫二维码还是一维码,默认二者都有 success: function (res) { var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果 _this.$router.push({ name: "reportDetail", query: { reportId: result } }); } }); }); }