Ich benutze nav.push()
und nav.pop()
für die normale Navigation, aber wenn ich dem Benutzer nicht erlauben möchte, zurückzugehen (wie zum Beispiel das Setzen der HomePage nach einem erfolgreichen Login) Verwende ich nav.setRoot()
mit lazy loading. Ich rufe auch setRoot('HomePage')
an, um die Seite zu aktualisieren, wenn die Benutzer ihr Profil aktualisieren.Ionic setRoot lässt mehrere Instanzen gleichzeitig laufen
Allerdings ist das Problem, das ich erfahre, dass die HomePage mehrmals geladen wird. Auch wenn ich den Refresh-Button im Browser drücke, erscheinen mehr Instanzen in der Konsole!
Ich habe alle setRoot-Aufrufe über einen Ereignis-Listener in app.component.ts geleitet, um zu verfolgen, wie oft es aufgerufen wird, aber alles sieht normal aus. Ich habe versucht, appCtrl.getRootNav().setRoot(page, args)
zu verwenden, aber nichts ändert sich.
Irgendwelche Idee, wo Sie suchen? Muss ich nach dem Aufruf von setRoot die Seiten manuell löschen oder den Navigationsstapel löschen?
Danke!
EDIT (Einige Code):
Abonnement für SetRoot Veranstaltung in app.component.ts:
this.events.subscribe('nav:setRoot', (data) => {
let page = data['page'];
let args = data['data'];
if(args !== null && args !== 'undefined'){
this.appCtrl.getRootNav().setRoot(page, args);
}else{
this.appCtrl.getRootNav().setRoot(page);
}
});
einer beliebigen Seite, wenn ich eine neue Root-Seite festlegen möchten:
let arg = { page: 'HomePage'};
this.events.publish('nav:setRoot', arg);
'Wenige Zeilen Code ist mehr als tausend Worte'.Können Sie einige Zeilen Ihres Codes teilen? – Sampath
Hallo Sampath, ich habe meine Frage bearbeitet, um zu zeigen, wie ich es mache. Der Navigationsprozess benötigt nicht so viel Code. Vielen Dank! – emiliosg