小程序页面要获取app.js中的数据
App({
onLaunch: function () {
if (!wx.cloud) {
console.error('请使用 2.2.3 或以上的基础库以使用云能力')
} else {
wx.cloud.init({
env: 'kk-cloud-test',
traceUser: true,
})
}
this.globalData = {
openid: "", //用户唯一标识
avatarUrl: "", //头像
nickName: "" //昵称
}
},
//获取openid方法,再index中调用过一次
getOpenId: function () {
wx.cloud.callFunction({
name: 'login',
data: {},
success: (res => {
console.log('[云函数] [login] user openid: ', res.result.openid)
this.globalData.openid = res.result.openid
console.log(this.globalData.openid);
}),
fail: err => {
console.error('[云函数] [login] 调用失败', err)
}
})
}
})
需要app.js中的数据的页面代码:
const app = getApp();
Page({
data: {
name:"昵称",
src:"../../images/logo.png"
},
onLoad: function (options) {
this.setData({name:app.nickName});
this.setData({src:app.avatarUrl});
console.log("方式1-id"+app.openid)
console.log("方式1-nc"+app.nickName)
console.log("方式2-id"+app.globalData.openid);
console.log("方式2-nc"+app.globalData.nickName);
},
//收藏列表按钮
btn_course:function(e){
wx.navigateTo({
url: 'collection_course/collection_course',
success: (result) => {},
fail: (res) => {},
complete: (res) => {},
})
}
})
为什么获取同一地方的数据,打印结果却不一样?
相关赋值代码:
代码块1
bindGetUserInfo: function(e) {
var that = this
wx.getUserProfile({
desc: '用于完善会员资料',
success: (res) => {
console.log("新登入方法profile");
console.log(res);
app.nickName=res.userInfo.nickName;
app.avatarUrl=res.userInfo.avatarUrl;
console.log("1"+app.nickName);
that.setData({
isHide: false
});
},
代码块2
const app = getApp();
onLoad: function (options) {
app.getOpenId()
}
结果:
所以到底如何获取app.js中的globalData?
看你在app中怎么定义
第一种: App({ openid:null, nickName:null, onLaunch: function(){}, ... }) 使用 const app = getApp(); app.openid 第二种(推荐): App({ globalData:{ openid:null, nickName:null }, onLaunch: function(){}, ... }) 使用 const app = getApp(); app.globalData.nickName
app是个对象,你如果直接把属性放在app里,比如getOpenId函数,比如nickName,那么用getApp()实例化得到app实例后直接app.getOpenId()和app.nickName即可,但是这样会导致那些是全局的变量不是很清晰,所以通常会在app里面放个对象,globalData,然后再这里面放属性,这样的话就需要app.globalData.xxx了。
还有建议你console.log("方式1-id"+app.openid)输出这样写:console.log("方式1-id", app.openid),不然会吧第二个内容自动转为字符串,情况复杂了不方便调试。
app.globalData
你只亮了部分代码,让别人解释原因就是玩别人
你赋值的代码就没给,关键代码不给,让别人猜