問題:
全局變量在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
})
})
},
})
