问题:
全局变量在app.json的onLaunch中调用接口去改变全局变量中的值,但是在使用页面中却没有获取改变之后的值
分析:
在app.js中定义一个全局方法,在使用的时候执行全局方法,返回的值来改变全局变量的值
废话不多说,下面是解决方法
在app.js页面
App({
globalData: {
mwxt_mark:false,//全局变量
isLoad:false
},
onLaunch: function () {
this.getmarkInfo();
},
getmarkInfo(){//全局方法
return new Promise( (resolve,reject) =>{
if(this.globalData.isLoad){//避免多次调用接口
resolve(this.globalData.mwxt_mark);
}else{
let data = {}
markRequest({ data })
.then(res => {
this.globalData.mwxt_mark = res.data.mwxt_mark;//全局变量在app.js中的修改
this.globalData.isLoad = true
resolve(this.globalData.mwxt_mark);
})
.catch(err => {
reject(err);
})
}
})
},
})
在使用页面
//index.js
//获取应用实例
const app = getApp()
Page({
data: {
mwxt_mark: app.globalData.mwxt_mark//全局变量值的获取
},
onLoad: function () {
app.getmarkInfo().then(res => {//全局方法得执行
this.setData({
mwxt_mark:res
})
})
},
})