Proverò a rispondere a questa domanda anche se potresti non trovare tutte le informazioni che stai chiedendo.
Molte persone - incluso me stesso - sembrano faticare per capire come funzionano il sistema di navigazione e la storia.
Ho risposto a un question in precedenza cercando di spiegare perché le cose non funzionano come previsto. Sembra che la navigazione tenga traccia di ogni vista che l'utente ha visitato utilizzando una collezione. In realtà ci sono 2 collezioni nell'oggetto $ionicHistory
. Il primo $ionicHistory.viewHistory().views
sembra tenere traccia di ogni vista visitata nello stack corrente mentre l'altro $ionicHistory.viewHistory().histories
tiene traccia di tutte le cronologie per l'intera app.
Si potrebbero avere diversi tipi di cronologia per tabulazioni, sidemenus o viste regolari.
È possibile vedere come funzionano le storie indipendenti parallele in questo codepen.
Ci sono 2 storie diverse lì. Uno è per la scheda home e il secondo è per la scheda about.
Navigando tra gli elementi secondari in ciascuna scheda e tornando alla scheda precedente, si noterà che il sistema di navigazione ricorda lo stato precedente.
Ho preparato un altro plunker qui dove è possibile vedere come funziona la navigazione con alcuni dettagli visualizzati nella pagina.
La raccolta di viste $ionicHistory.viewHistory().views
viene aggiornata ogni volta che l'utente visita una nuova pagina (la vista corrente nella raccolta è racchiusa tra parentesi quadre).
Se la vista è stata aggiunta alla raccolta, non sarà (non dovrebbe) essere aggiunta di nuovo.
È possibile modificare il comportamento di compensazione della storia ($ionicHistory.clearHistory()
) o impostando la radice per la storia attuale:
$ionicHistory.nextViewOptions({
historyRoot: true
});
Nella pagina fattura del mio plunker c'è un tasto verde (Altro Root View). Quando viene premuto ho impostato la nuova radice storia e cambiare stato:
$ionicHistory.nextViewOptions({
historyRoot: true
});
$state.go('otherviewroot');
Le cose funzionano come previsto e infatti ora non ho una vista posteriore e il mio stack contiene solo la vista corrente.
cose si incasinato quando si tenta la sequenza:
Home - Contacts - Invoices - Home (button in the header).
Ora è sembra ionico ha perso il controllo della sequenza e mantiene sull'aggiunta di vista alla collezione.
Premendo il pulsante home è necessario deselezionare il pulsante Indietro, poiché siamo nella radice per la cronologia corrente, ma non accade.
L'utilizzo ripetuto dello stesso motivo aumenta la dimensione della raccolta indefinitamente.
Immagino che questo non sia il comportamento giusto e che sia necessaria una correzione.
Tornando alla tua domanda.
Il pulsante Indietro in Android funziona ... il che significa che segue lo stesso schema.
I moduli per fortuna non vengono considerati come visualizzazioni regolari e non influiscono sulla raccolta.
Eventuali feedback per la risposta? – LeftyX
@LeftyX la tua risposta è stata molto utile. Suppongo che ci sia un bug nell'implementazione di ionico, perché sono riuscito a risolvere alcuni problemi con la navigazione, specialmente quando si utilizza Side Menus. BTW Ho implementato una [Hardware-Back Simulation for Browser] (http://stackoverflow.com/a/31617294/2176962) che mi ha aiutato a testare molti scenari con problemi di navigazione. – hgoebl
Sì, si spera che a un certo punto qualcuno lo aggiusterà. Ho controllato la tua soluzione. Interessante. Saluti. – LeftyX