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