doWxLogin(){ wx.login({ success: res => { // 发送 res.code 到后台换取 openId, sessionKey, unionId wx.request({ url: this.baseURL+"/wx/openid", method: "post", data:{ code: res.code }, success: re=>{ wx.hideToast(); if(re!=""){ this.globalData["openid"] = re.data.openid; this.globalData["info"] = re.data; } else{ this.pub.showPop("获取ID失败请重新打开",null,null); } }, fail:e=>{ wx.hideToast(); this.pub.showPop("获取ID失败请重新打开",null,null); } }); } }); }显示TypeError: Cannot read property 'showPop' of undefined怎么修改代码
时间: 2024-02-10 11:23:09 浏览: 86
根据错误提示,你的代码中存在一个问题:`this.pub` 是 undefined,因此无法调用 `showPop` 方法。这种错误通常是由于作用域问题导致的。可以尝试以下两种方式解决这个问题:
1. 使用箭头函数绑定正确的作用域:
```javascript
doWxLogin() {
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
wx.request({
url: this.baseURL + "/wx/openid",
method: "post",
data: {
code: res.code
},
success: re => {
wx.hideToast();
if (re != "") {
this.globalData["openid"] = re.data.openid;
this.globalData["info"] = re.data;
} else {
this.pub.showPop("获取ID失败请重新打开", null, null);
}
},
fail: e => {
wx.hideToast();
this.pub.showPop("获取ID失败请重新打开", null, null);
}
});
}
});
}
```
通过使用箭头函数,可以确保 `this` 的作用域指向当前的对象。
2. 在 `onLaunch` 方法中绑定正确的作用域:
```javascript
App({
onLaunch: function () {
// ...
this.pub = {
showPop: function(msg, callback) {
// 实现 showPop 方法的逻辑
}
};
// ...
},
// ...
});
```
在 `onLaunch` 方法中,为 `this.pub` 定义一个具有正确作用域的对象。这样在 `doWxLogin` 方法中就能够正常调用 `this.pub.showPop` 方法了。
请根据你的代码结构选择其中一种方式进行修改,以解决该错误。
阅读全文