因为需要在onLoad调用用户登陆信息数据,网上找了都是使用原生小程序开发的,没有uni-app解决问题的办法,现记录下来。
1、在app.vue onLaunch 注意,这里一定要使用(that.$scope.checkLoginReadyCallback)而不是that.checkLoginReadyCallback。是因为在定义于 App() 内的函数中,或调用 App 前调用 getApp() ,可以通过 this.$scope 获取对应的app实例。如果直接使用that.checkLoginReadyCallback只能获得未定定义的结果,详见官方文档 https://uniapp.dcloud.net.cn/tutorial/page.html#getapp
export default { globalData: { isSessionkey:false, //onLaunch是否已经执行完毕}, onLaunch: function(options) { wx.login({ success(res) { if (res.code) { ...... that.globalData.isSessionkey=true; //由于这里是网络请求,可能会在 Page.onLoad 之后才返回 在onLoad中定义下app.checkLoginReadyCallbac 后才执行下述 that.$scope.checkLoginReadyCallback,此时用户数据肯定得到了,回调内再则可获取到用户数据 if (that.$scope.checkLoginReadyCallback){ that.$scope.checkLoginReadyCallback(true); } } }
2、在页面onLoad中调用
onLoad() { let that = this; //判断onLaunch是否执行完毕 if (app.globalData.isSessionkey){ //初始化页面数据方法 }else{ app.checkLoginReadyCallback = res => { //初始化页面数据方法 }; } },
标签:onLoad,微信,app,onLaunch,checkLoginReadyCallback,scope,页面 From: https://www.cnblogs.com/fogwang/p/18666938