全局变量+wx.navigateTo的 bug
发布于 6 年前 作者 yangfan 3137 次浏览 来自 问答

bug复现

app.js中定义全局变量

globalData: {

                   xtuserInfo: {

                                       xt_id: ’

0’

                                     },

                    }

tabBar有主页和次页2个页

主页中赋值

app.globalData.xtuserInfo.xt_id=‘10’

次页中不对app.globalData.xtuserInfo.xt_id进行操作

在一非tabBar页里定义

const app = getApp()

Page({

          data: {

                     xtid=app.globalData.xtuserInfo.xt_id

                   }

重点来了

1、清空缓存(记得要先清空)

2、编译进入主页,console.log(app.globalData.xtuserInfo.xt_id)  显示  10

3、进入次页,wx.navigateTo 非tabBar页,console.log(app.globalData.xtuserInfo.xt_id)  显示  0

    但是在主页中wx.navigateTo 非tabBar页,console.log(app.globalData.xtuserInfo.xt_id)  显示  10

4、不清空缓存,再编译进入主页console.log(app.globalData.xtuserInfo.xt_id)  显示  10

5、再次进入次页,wx.navigateTo 非tabBar页,console.log(app.globalData.xtuserInfo.xt_id)  显示 10

4 回复

从新检查了一下,发现与wx.navigateTo无关,是页面page页面的初始数据data中定义的数据使用全局变量赋值得到的是app.js中该全局变量的初始值,而不是实际值

app.js中定义全局变量

globalData: {

xt_id: ‘0’,//协同id

}

主页面

主页中赋值

const app = getApp()

......

......

onLoad: function () {

                      app.globalData.xt_id='10'

}

【页面一】

const app = getApp()

data: {

xtid: app.globalData.xt_id

},

onLoad: function (options) {

console.log(“app.globalData.xt_id=”, app.globalData.xt_id)

console.log(“this.data.xtid=”, this.data.xtid)

},

console.log的结果是

app.globalData.xt_id=10

this.data.xtid=0

按道理this.data.xtid不应该等于10吗?

没复现你说的问题,楼主发个代码片段  看看哪不一样

data初始化要早于onLoad,既然app.globalData.xt_id=10 能拿到正确值 也就很好解决了

回到顶部