参考:小程序如何在其他页面监听globalData中值的变化?https://www.jianshu.com/p/8d1c4626f9a3

原因就是:app.js没执行完时,其他页已经onload了,所以取不到globalData

解决办法就是用回调函数

app.js

//app.js
App({
globalData: { }, onLaunch: function() {
},
//获取openid,由于网络延时,通常在其他页onload之后才会success,所以从其他页传回调函数cb进来。
getopenid: function(cb) {
if (this.globalData.openid) {
typeof cb == "function" && cb(this.globalData.openid)
} else {
var that = this
wx.cloud.callFunction({
name: 'login',
data: {},
success: res => {
//闭包函数内,可以用this,而不需要用that=this
that.globalData.openid = res.result.openid
typeof cb == "function" && cb(that.globalData.openid)
},
fail: err => {
wx.showToast({
icon: 'none',
title: '获取 openid 失败,请检查 login 云函数',
})
console.log('[云函数] [login] 获取 openid 失败,请检查是否有部署云函数,错误信息:', err)
},
}) }
}, })

在其他页面上,onload中 const app = getApp()   用app.getopenid调用app.js中的函数,并传入参数that.cb

  onLoad: function(options) {
//设置回调,防止小程序globalData拿到数据为null
let that = this;
app.getopenid(that.cb) },
cb: function(res) {
let that = this
console.log("write cb res", res)
that.setData({
openid: res
})
},

这样当App.js中的getopenid有返回值时,就会更新到其他页面

还可以将that.cb写成闭包函数,就不用 let that =this了

  onLoad: function(options) {
//设置回调,防止小程序globalData拿到数据为null
app.getopenid(res => {
console.log("write cb res", res)
this.setData({
openid: res
})
})
},

微信小程序填坑之旅(1)-app.js中用云开发获取openid,在其他页上用app.globaldata.openid获取为空的更多相关文章

  1. 微信小程序填坑之旅一(接入)

    一.小程序简介 小程序是什么? 首先“程序”这两个字我们不陌生.看看你手机上的各个软件,那就是程序.平时的程序是直接跑在我们原生的操作系统上面的.小程序是间接跑在原生系统上的.因为它嵌入在微信中,受微 ...

  2. 微信小程序填坑之旅

    一.解决scroll-view的滚动条问题 1.出现场景css. 有些场景下scroll-view是不需要滚动条的,比如顶部导航栏的横向滑动.而在单页的css样式中加入特定代码不能影响到全局的样式 2 ...

  3. 微信小程序填坑之旅(2)-wx.showLoading的时候,仍能点击穿透,造成重复点击button的问题

    解决办法:mask =true wx.showLoading({ title: '正在上传...', mask:true, })

  4. 微信小程序填坑---小程序支付

    因为公司刚刚重新做了网站,所以也吧公众号和小程序提上了日程,在公众号里面没有什么问题,直接按照官方文档进行代码编写.调试,然后就解决了公众号内支付的问题. 因为小程序提供了<webview> ...

  5. 微信小程序填坑之路其一:wx.request发送与服务端接受

    一.序言 应公司要求要求,要用小程序开发一个信息录入系统.没办法只能听话来填坑. 先介绍一下环境:客户端——小程序:服务端——java:数据库——mysql:服务器——centos7 需求:客户端输入 ...

  6. 微信小程序填坑之路(三):布局适配方案(rpx、px、vw、vh)

    因为小程序是以微信为平台运行的,可以同时运行在android与ios的设备上,所以不可避免的会遇到布局适配问题,特别是在iphone5上,因为屏幕尺寸小的缘故,也是适配问题最多的机型,下面就简单介绍几 ...

  7. 微信小程序填坑之路

    图片处理 三个小方法仅供参考1.将图片转成base64编码,可以使用代码来转换,当然我才不愿意特意写代码转,我懒,献上一个在线图片转base64的地址:http://tool.css-js.com/b ...

  8. 微信小程序填坑之page[pages/XXX/XXX] not found.May be caused by

    当页面出现   page[pages/XXX/XXX] not found.May be caused by :1. Forgot to add page route in app.json.2. I ...

  9. [转]微信小程序填坑之路之使用localhost在本地测试

    本文转自:http://www.wxappclub.com/topic/798

随机推荐

  1. Git安装使用秘籍

    首先Git的功能,是用于帮助用户实现版本控制的软件,GIT一般和GitHub配套使用.Git是个软件,GitHub是个网站,它们的关系就像雷锋与雷峰塔一样,没什么关系.本文只提供Git安装方法,其它请 ...

  2. MySQL 聚合函数(四)检测功能依赖

    源自MySQL 5.7 官方手册:12.20.4 Detection of Functional Dependence 本节提供了MySQL检测功能依赖的方式的几个示例.这些示例使用此表示法: {X} ...

  3. 基于bootstrap selectpicker ,实现select下拉框模糊查询功能

    1.html代码块 需要引入bootstrap的css js jquery bootstrap.css bootstrap-select.min.css jquery-1.11.3.min.js bo ...

  4. Java装饰者模式(思维导图)

    图1 装饰者模式[点击查看图片] 1,一个简单的以人为主体的装饰者模式 被装饰者 public interface Human {//被装饰者 public void wearClothes(); p ...

  5. .NET Core 3.0 发布单文件可执行程序

    Windows dotnet publish -r win10-x64 /p:PublishSingleFile=true maxOS dotnet publish -r osx-x64 /p:Pub ...

  6. caffe笔记

    1. 训练    cifar10 示例 ① cd caffe.1.0.0 ./data/cifar10/get_cifar10.sh    #获取图片 ② ./examples/cifar10/cre ...

  7. vue.js devtools图标不亮

    第一步:打开谷歌扩展程序 第二步:设置允许访问文件地址

  8. # 机器学习算法总结-第五天(降维算法PCA/SVD)

  9. django 文件上传样例以及遇到的一些问题

    使用django上传文件 主流有两种方法 from表单以及ajax,为了自由度高一点,选择了ajax来实现文件的上传 前端部分代码如下: 主要关注 一 有一个文件上传(type='file')的按钮, ...

  10. 解释mysql 语句

    一.在我们创建mysql数据库的时候我们经常会用到这句SQL: CREATE DATABASE TEST DEFAULT CHARACTER SET utf8 COLLATE utf8_general ...