问题:
全局变量在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 }) }) }, })