uni-app小程序首頁index獲取不到app中動態(tài)設(shè)置的globalData的解決方法

方式一:由頁面定義 app 里的回調(diào)函數(shù)
app.vue

methods: {
    getLogin() {
        let that = this;
        uni.login({
            success: function(res) {
                console.log('默認(rèn)登錄', 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);
                            // 在應(yīng)用onLaunch時,getApp對象還未獲取,暫時可以使用this.$scope.globalData獲取globalData。
                            //由于這里是網(wǎng)絡(luò)請求,可能會在 Page.onLoad 之后才返回  所以此處加入 callback 以防止這種情況
                            console.log('app that', that);
                            if (that.$scope.testDataCallback) {
                                console.log('有回調(diào)');
                                that.$scope.testDataCallback(res.data);
                            }
                        })
                        .catch(err => {
                            console.log(err);
                        });
                } else {
                    console.log('獲取用戶登錄態(tài)失??!' + res.errMsg);
                }
            },
            fail: function() {
                uni.showToast({
                    title: '登錄失敗',
                    icon: 'none'
                });
            }
        });
    }
}

index.vue

onLoad() {
    console.log('測試');
    //判斷是否獲取到動態(tài)設(shè)置的globalData
    if (app.globalData.token) {
        console.log('有token');
    } else {
        // 聲明回調(diào)函數(shù)獲取app.js onLaunch中接口調(diào)用成功后設(shè)置的globalData數(shù)據(jù)
        console.log('沒有token',app);
        app.testDataCallback = res => {
            console.log('查看信息', res);
        };
    }
}

方式二:由頁面觸發(fā) app 里的請求
app.vue

methods: {
    getLogin() {
        let that = this;
        return new Promise((resolve, reject) => {
            uni.login({
                success: function(res) {
                    console.log('默認(rèn)登錄', 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('獲取用戶登錄態(tài)失??!' + 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中動態(tài)設(shè)置的globalData的原因以及解決方法
參考二:微信小程序 index.js獲取app.js異步請求的動態(tài)數(shù)據(jù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 真理不辨不明, 好物不比不知! 空氣凈化器已經(jīng)開始走進(jìn)越來越多的普通家庭,成為我們?nèi)粘I钪校顬槭煜さ幕锇橹弧?..
    姜甘霖閱讀 404評論 0 0
  • 我買了一箱蘋果 放在小小的出租房里 半夜,燈都熄了 我躺在床上聞到淡淡的蘋果香 開始在想 也許, 我可以過一段日子...
    蝸牛牽?;?/span>閱讀 174評論 0 1
  • 我們怎么生活。 我也沒有勇氣回答這個問題。 路邊拼命盛放得不一樣的植物,每天躺在公園里曬太陽的流浪狗,被人流沖散的...
    A_Fine_Frency閱讀 332評論 0 0

友情鏈接更多精彩內(nèi)容