微信小程序app.js中的初始值发生改变后,调用globalData中值的index.js如何立即更新对应的值

问题描述

这里是info.js调用app.js中的全局参数

clipboard.png

这个就是app.js定义的role

clipboard.png

info首次加载后成功打印出role=null;此时我在info.js中调用了app.js一个方法,改变了app.js中的role值的参数='EMP';
我想info.js中data定义的role=null;此时也='EMP';

问题出现的环境背景及自己尝试过哪些方法

我想不出来如何去实现,

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
info.js代码

const app = getApp()
Page({
  data: {
    role:undefined,
  },
  onLoad: function() {
    let that = this;
    that.setData({
      role:app.globalData.role
    })
  },
  onReady: function () {
    console.log(this.data.role)//role=null
    app.getRole()
    console.log(this.data.role)//role=null,此时我想role='EMP'
  },
})

app.js

App({
  globalData: { //公用值
    role:'null',
  },
  getRole:function(){
    let that = this;
    that.globalData.role = 'EMP';
    console.log(that.globalData.role)//='EMP'
  }
})

你期待的结果是什么?实际看到的错误信息又是什么?

有人说用Promise但是不清楚如何写,能否举列。

阅读 6.8k
2 个回答

这个不会自动更新,可以在值改变的时候做一些操作来达到改变Page.data里的值,比如写个回调:

App({
  globalData: { //公用值
    role:'null',
  },
  getRole:function(callback){
    let that = this;
    that.globalData.role = 'EMP';
    console.log(that.globalData.role)//='EMP'
    if(callback){
        callback(that.globalData.role);
    }
  }
})

Page:

const app = getApp()
Page({
  data: {
    role:undefined,
  },
  onLoad: function() {
    let that = this;
    that.setData({
      role:app.globalData.role
    })
  },
  onReady: function () {
    let that = this;
    console.log(that.data.role)//role=null
    app.getRole(function(role){
        that.setData({
            role:role
        });
        console.log(that.data.role)//role='EMP'
    })
  },
})

globalData是不是实时更新的那种,你改后要重新获取下

data: {
    role: undefined,
  },
  onLoad: function () {
  },
  onReady: function () {
    console.log(this.role)//role=null
    app.getRole()
    this.setData({
      role: app.globalData.role
    })
    console.log(this.data.role)//role=null,此时我想role='EMP'
  },
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题