延迟从Ionic 2存储中检索数据 [英] Delay in retrieving data from Ionic 2 storage

查看:116
本文介绍了延迟从Ionic 2存储中检索数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我启动应用程序之前,如果有任何可用的用户数据,我将检查本地存储,如果是,我将导航到主页,否则登录页面。

Before I launches the app I will check with local storage if any user data available, If yes I will navigation to Home page else Login page.

这里我无法检索存储的数据,请输入任何信息......

Here I'm unable to retrieve stored data, Any inputs please...

目前正在使用Ionic 2 SQlite插件。

Currently using Ionic 2 SQlite plugin.

注意:在浏览器中它工作正常,但在Android设备上它无法正常工作。

Note: In browser it's working fine but on Android device it's not working.

loadUser() {
        this.userSettings.getUser().then(user => {
            this.userObj = JSON.stringify(user);
            if (user) {
                console.log('App : ', this.userObj);
                this.nav.setRoot(HomePage,this.userObj);

            } else {
                console.log('App : No user data');
                this.rootPage = LoginPage;
            }

        });

    }



login.ts:保存用户数据



login.ts : Saving user data

this.userSettings.addUser(
                            userData.employeeCode,
                            userData.password,
                            userData.role
                        );



user-settings.ts:提供商中的存储文件



user-settings.ts : Storage file in providers

getUser() {
        if (this.sql) {
            return this.sql.get('user').then(value => value);
        } else {
            return new Promise(resolve =>                 resolve(this.storage.get('user').then(value => value)));
        }
}

addUser(employeeCode, password, role) {
        let item = { employeeCode: employeeCode, password: password, role: role };

        if (this.sql) {
            this.sql.set('user', JSON.stringify(item)).then(data => {
                this.events.publish('userObj:changed');
            });
        } else {
            return new Promise(resolve => {
                this.storage.set('user', JSON.stringify(item)).then(() => {
                    this.events.publish('userObj:changed');
                    resolve();
                });
            });
        }
    }



app.module.ts:



app.module.ts:

providers: [
        { provide: ErrorHandler, useClass: IonicErrorHandler },
        AuthService,
        SqlStorage,
        UserSettings,
        Storage
    ]

提前致谢。

推荐答案

问题解决了

调用sqlite后在 ngAfterViewInit 中操作它运行正常。

After calling the sqlite operation in ngAfterViewInit it's working fine.

ngAfterViewInit() {
        this.storage.get('user').then((user: any) => {
            if (user) {

                this.userCredentials = JSON.parse(user);

                this.nav.setRoot(HomePage, this.userCredentials);

            }
            else {
                this.rootPage = LoginPage;
            }
        });
    }

[来源]( https://github.com/driftyco/ionic-conference-app/blob/master/ src / pages / account / account.ts

干杯:)

这篇关于延迟从Ionic 2存储中检索数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆