2016-04-16 6 views
6

Sto tentando di avviare un'applicazione base ionic2 e mi chiedevo se il mio tempo di caricamento iniziale dell'applicazione è un problema o meno. Quello che mi piacerebbe fare è impostare la pagina iniziale su una pagina di accesso se l'utente non è autenticato.Impostazione della pagina radice nelle app ionic2 e angular2 in base a un evento asincrono

Inizialmente avevo impostato la rootpage sulla home page e quindi quando la chiamata async tornava da localstorage, reindirizzavo la rootpage alla pagina di login se l'utente non era autenticato. Tuttavia, questo ha causato uno sfarfallio in cui vedono una pagina e poi vengono inviate a un'altra pagina.

Sembra che quello che voglio fare è attendere la chiamata di archiviazione locale prima di mostrare qualsiasi schermata.

La mia domanda è questa: come il codice ora si trova, ci sarà una condizione di errore in cui la piattaforma pronta si attiva prima che la pagina radice sia impostata, causando così una sorta di problema? Come devo gestire questa situazione in Ionic 2 e Angular 2? Devo fare in modo che la chiamata localStorage venga sincronizzata oppure devo inserirla in un altro evento o metodo che fa parte del ciclo di vita dell'app o della pagina in Angular 2?

Devo utilizzare una sorta di osservabile o attendere la sintassi?

export class MyApp { 
    rootPage: any; 
    local: Storage = new Storage(LocalStorage); 

    constructor(platform: Platform) { 

    this.local.get('user').then(user => { 
     if (user) { 
     this.rootPage = TabsPage; 
     } else { 
     this.rootPage = LoginPage; 
     } 
    }); 

    platform.ready().then(() => { 
     // Will this ever fire before the rootpage is set? 
     StatusBar.styleDefault(); 

    }); 
    } 
} 

risposta

2

Non è necessario aggiungere chiamata asincrona alla memoria locale, come si può vedere in questo esempio: https://github.com/RedFroggy/ionic2-nfc-app/blob/master/app/app.ts#L52

Hai solo bisogno di verificare l'esistenza utente nella memoria locale e impostare il rootPage nella HomePage o LoginPage.

+0

anche durante il controllo questa cosa si può avere la splashscreen aperto e manualmente nasconderlo dopo l'operazione è fatto in modo che l'utente abituato sapere che cosa sta accadendo, invece di utilizzare manichino pagina iniziale come la risposta qui sotto –

2

È possibile creare una pagina iniziale fittizia (ad esempio sfondo bianco, preloader qualunque) per evitare lo sfarfallio e quindi passare alla pagina di accesso o schede.

+1

solo nascondere manualmente l'splashscreen invece di avere una pagina fittizia (immagino che questa operazione venga eseguita all'avvio dell'app). Inoltre, invece della memoria locale, scrivo solo l'ID dell'utente nel file txt. Se esiste, collegalo e mostra la homepage, se non mostra la pagina di accesso –

Problemi correlati