【小程序】全局变量的设置、使用、修改、全局方法执行

时间:2024-03-08 22:52:02

问题:

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