业务场景:小程序启动---->进入启动页面(该页面异步请求,根据返回的用户角色决定所有其他页面的主题版本)---->其他页面
//启动页面伪代码:
onload:function(){
wx.request({
url: '登录接口地址', //仅为示例,并非真实的接口地址
data: '入参'
header: {
'content-type': 'application/json' // 默认值
},
success (res) {
//返回用户角色
console.log(res.data)
if(res.data.role = 'a'){
app.globalData.themeColor = {--bg-color:red;}
}else if(res.data.role = 'b'){
app.globalData.themeColor = {--bg-color:green;}
}else if(res.data.role = 'c'){
app.globalData.themeColor = {--bg-color:blue;}
}else {
app.globalData.themeColor = {--bg-color: white;}
}
}
})
}
//about页等其他页面
Page({
data:{
themeColor:app.globalData.themeColor
}
})
问题:进入其他页面时data中的themeColor竟然取不到值,想问下官方开发人员,所有页面的data的数据初始化是在哪个阶段完成的呢,为什么我在启动页已经设置上了,但是在其他页面的data中取不到值,只能在每个页面的onload中通过setData({themeColor:app.globalData.themeColor})才可以。
是在app启动的时候,页面文件加载的时候就初始化好了。。比如你可以找个压根没显示的页面,在Page()外面 console.log随便打印个啥,然后你就知道是啥时候初始化的 data对象了。当然你更可以直接打个debugger,进去看看是什么时候