美文网首页
uni-app小程序首页index获取不到app中动态设置的gl

uni-app小程序首页index获取不到app中动态设置的gl

作者: 醉笙情丶浮生梦 | 来源:发表于2020-01-04 11:29 被阅读0次

    方式一:由页面定义 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异步请求的动态数据

    相关文章

      网友评论

          本文标题:uni-app小程序首页index获取不到app中动态设置的gl

          本文链接:https://www.haomeiwen.com/subject/szsxactx.html