小程序获取app.js中的全局变量为空
发表时间:2020-10-13
发布人:葵宇科技
浏览次数:104
小程序获取app.js中的全局变量为空
最近写小程序的时候,需要获取用户openid,在app.js使用了相关API获取用户信息,然后存到全局变量中,在其他页面使用的时候,发现获取全局变量的时候是空值。后才发现在小程序中,onLaunch 方法和>App({ /** * 当小程序初始化完成时,会触发>: { openId:'', unionId:'', }, >: function () { var that=this; wx.login({ success(res){ console.log(res) wx.request({ url:'url', data: { "code":res.code, }, method: 'get', header: { 'content-type': 'application/json' }, success(res){ console.log(res) //不能使用that.setData({})给全局变量赋值 that.globalData.unionId=res.data.unionid; that.globalData.openId=res.data.openid; // 由于login()是网络请求,可能会在 Page.onLoad 之后才返回 // 所以此处加入callback 以防止这种情况 if(that.loginCallBack){ that.loginCallBack(res) } }, fail(res){ console.log('网络请求失败'+res) } }) } }) }, })
index.js
var app=getApp();
var openid=app.globalData.openId;
>: function (e) {
var that=this;
//使用回调桉树Callback函数给全局变量赋值
//同样不能使用that.setData({})赋值
app.loginCallBack=function(){
openid=app.globalData.openId
}
},
如果想在其他页面引用全局变量的话,需要在那个页面的onLoad方法中再次赋值:
>: function (options) {
vipopenid=app.globalData.openId;
xxx=app.globalData.xxx;//其他变量
},
否则,全局变量的值可能还是为空!