这个问题遇到过很多次了,这次又遇到一次浪费我时间想了一会儿,决定记下来,先举例
wx.scanQRCode({
needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
success: function (res) {
var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
if (result.indexOf("qrStorageTicket") !== -1) {
result = JSON.parse(result)
}
/**
* 扫到存彩票的二维码
*/
//重定向回主页的时候,判断扫到的码是否存在 qrStorageTicket,如果存在,进if
if (result.cmd === "qrStorageTicket") {
alert("进入了")
this.storageLottery(result);
}
}
这里我在H5里面用了微信的JSSDK调用扫一扫功能,扫描到二维码的时候,上面的this.storageLottery(result);方法死活都没执行,alert都执行了,其实这里是因为this指向的问题,改成这样就好了
_this = this;
wx.scanQRCode({
needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
success: function (res) {
var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
if (result.indexOf("qrStorageTicket") !== -1) {
result = JSON.parse(result)
}
/**
* 扫到存彩票的二维码
*/
//重定向回主页的时候,判断扫到的码是否存在 qrStorageTicket,如果存在,进if
if (result.cmd === "qrStorageTicket") {
alert("进入了")
_this.storageLottery(result);
}
}
因为这里的this指向的是wx.scanQRCode,要改成指向当前页面。
其他类似方法没有调用的问题我想大多也是因为this指向的问题吧