uni-app小程序首页index获取不到app中动态设置的globalData的解决方法

方式一:由页面定义 app 里的回调函数
app.vue

methods: {
    getLogin() {
        let that = this;
        uni.login({
            success: function(res) {
                console.log('默认登录', res);
                if (res.code) {
                    const params = {
                        code: res.code,
                        // #ifdef MP-ALIPAY
                        type: 2,
                        // #endif
                        // #ifdef MP-WEIXIN
                        type: 1
                        // #endif
                    };
                    appModel
                        .login(params)
                        .then(res => {
                            console.log('登录成功', res);
                            that.globalData.token = res.data.token;
                            uni.setStorageSync('token', res.data.token);
                            // 在应用onLaunch时,getApp对象还未获取,暂时可以使用this.$scope.globalData获取globalData。
                            //由于这里是网络请求,可能会在 Page.onLoad 之后才返回  所以此处加入 callback 以防止这种情况
                            console.log('app that', that);
                            if (that.$scope.testDataCallback) {
                                console.log('有回调');
                                that.$scope.testDataCallback(res.data);
                            }
                        })
                        .catch(err => {
                            console.log(err);
                        });
                } else {
                    console.log('获取用户登录态失败!' + res.errMsg);
                }
            },
            fail: function() {
                uni.showToast({
                    title: '登录失败',
                    icon: 'none'
                });
            }
        });
    }
}

index.vue

onLoad() {
    console.log('测试');
    //判断是否获取到动态设置的globalData
    if (app.globalData.token) {
        console.log('有token');
    } else {
        // 声明回调函数获取app.js onLaunch中接口调用成功后设置的globalData数据
        console.log('没有token',app);
        app.testDataCallback = res => {
            console.log('查看信息', res);
        };
    }
}

方式二:由页面触发 app 里的请求
app.vue

methods: {
    getLogin() {
        let that = this;
        return new Promise((resolve, reject) => {
            uni.login({
                success: function(res) {
                    console.log('默认登录', res);
                    if (res.code) {
                        const params = {
                            code: res.code,
                            // #ifdef MP-ALIPAY
                            type: 2,
                            // #endif
                            // #ifdef MP-WEIXIN
                            type: 1
                            // #endif
                        };
                        appModel
                            .login(params)
                            .then(res => {
                                console.log('登录成功', res);
                                that.globalData.token = res.data.token;
                                uni.setStorageSync('token', res.data.token);
                                resolve(res);
                            })
                            .catch(err => {
                                console.log(err);
                                reject(err);
                            });
                    } else {
                        console.log('获取用户登录态失败!' + res.errMsg);
                    }
                },
                fail: function() {
                    uni.showToast({
                        title: '登录失败',
                        icon: 'none'
                    });
                }
            });
        });
    }
}

index.vue

onLoad() {
    console.log("测试");
    app.getLogin().then(res => {
        console.log('获取成功了吗?', res);
    });
}

参考一: 微信小程序首页index.js获取不到app.js中动态设置的globalData的原因以及解决方法
参考二:微信小程序 index.js获取app.js异步请求的动态数据

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 真理不辨不明, 好物不比不知! 空气净化器已经开始走进越来越多的普通家庭,成为我们日常生活中,最为熟悉的伙伴之一。...
    姜甘霖阅读 353评论 0 0
  • 我买了一箱苹果 放在小小的出租房里 半夜,灯都熄了 我躺在床上闻到淡淡的苹果香 开始在想 也许, 我可以过一段日子...
    蜗牛牵牛花阅读 132评论 0 1
  • 我们怎么生活。 我也没有勇气回答这个问题。 路边拼命盛放得不一样的植物,每天躺在公园里晒太阳的流浪狗,被人流冲散的...
    A_Fine_Frency阅读 311评论 0 0