Comment ionique de l'histoire et quand on est un utilisateur non-root pile créé?
Je suis en utilisant ionique v1.0.0 et ne pas comprendre la façon parallèle l'histoire géré par $ionicHistory
œuvres.
En particulier sur les appareils Android, lors de l'utilisation de l' (anciennement matériel)bouton de retour, mon Angulaire application parfois se comporte de façon étrange et j'aimerais comprendre pourquoi. (exemple: navigation dans le dos s'ouvre une vue fermée par $ionicGoBack()
longtemps)
Pour moi, il semble que certains de l'interface utilisateur-routeur navigations créer de nouvelles histoire de piles et d'autres ont mis les éléments de l'historique dans la racine de l'histoire, même lorsqu'elle passe de l'état de sous-état devrait ajouter à l'histoire, où l'état est enregistré IMO.
Questions
- Quelqu'un peut-il expliquer dans quels cas
ui-sref
ou$state.go(...)
ajouter les éléments de l'historique d'une nouvelle pile? - Quand ils sont ajoutés à
root
? - Sont les auxiliaires modaux traitées d'une manière spéciale?
Désolé de ne pas être plus précis, mais l'app est plutôt compliqué et je ne sais pas comment faire pour isoler les problèmes en un seul plunkr. Peut-être que j'ai raté un morceau de bonne documentation...
- Tous les commentaires pour la réponse?
- votre réponse a été très utile. Je suppose qu'il y a un bug dans la mise en œuvre de ionique, parce que j'ai seulement réussi à marcher-autour de quelques problèmes avec la navigation, en particulier lors de l'utilisation de Côté les Menus. BTW j'ai mis en place un Matériel-Retour de Simulation par Navigateur qui m'a beaucoup aidé les scénarios de test avec des problèmes de navigation.
- Oui, espérons-le, à un certain moment, quelqu'un va le corriger. J'ai vérifié votre solution. Intéressant. Des acclamations.
Vous devez vous connecter pour publier un commentaire.
Je vais essayer de répondre à cette question, même si vous ne pourriez pas trouver toutes les infos que vous demandez.
Beaucoup de gens - inclus moi - même- semble avoir des difficultés à comprendre comment le système de navigation et de l'histoire des œuvres.
J'ai répondu à une question plus tôt pour essayer d'expliquer pourquoi les choses ne fonctionnent pas comme prévu.
Il semble que la navigation, garde la trace de chaque point de vue que l'utilisateur a visités à l'aide d'une collection.
En fait il y a 2 collections dans le
$ionicHistory
objet.Le premier
$ionicHistory.viewHistory().views
semble garder une trace de chaque visité vue dans le courant de la pile, tandis que l'autre$ionicHistory.viewHistory().histories
conserve la trace de toutes les histoires pour l'ensemble de l'application.Vous peut avoir différents types de l'histoire pour les onglets, sidemenus ou régulier de points de vue.
Vous pouvez voir comment parallèle indépendant antécédents de travail dans ce codepen.
Il y a 2 histoires là. L'un est pour l'onglet "accueil", et le second est pour l'onglet à propos.
De naviguer à travers les sous-éléments dans chaque onglet et de revenir à l'onglet précédent, vous remarquerez que le système de navigation a souvenez-vous de l'état précédent.
Je vous ai préparé un autre plunker ici où vous pouvez voir comment les travaux de navigation, avec quelques détails affichés dans la page.
La collection de vues
$ionicHistory.viewHistory().views
est mis à jour chaque fois que l'utilisateur visite une nouvelle page (la vue actuelle de la collection est enveloppé dans des crochets).Si la vue a été ajouté à la collection, il ne va pas (il ne devrait pas) être ajouté à nouveau.
Vous pouvez modifier le comportement de compensation de l'histoire (
$ionicHistory.clearHistory()
) ou de la configuration de la racine pour l'histoire actuelle:Dans la page de la Facture de mon plunker il y a un bouton vert (Autre Vue de la Racine). Quand la touche est pressée, je mis la nouvelle histoire de la racine et changer l'état:
Les choses fonctionnent comme prévu et en fait maintenant je n'ai pas une vue de l'arrière et ma pile ne contient que la vue actuelle.
Les choses se foiré lorsque vous essayez la séquence:
Maintenant, il semble Ionique a perdu le contrôle de la séquence et la garde sur l'ajout de points de vue à la collection.
En appuyant sur le bouton d'accueil doit désactiver le bouton de retour, puisque nous sommes à la racine pour le courant de l'histoire, mais ça n'arrivera pas.
En utilisant le même schéma encore et augmente la taille de la collection indéfiniment.
Je suppose que ce n'est pas le bon comportement et une correction est nécessaire.
Pour en revenir à votre question.
Le bouton retour dans Android fonctionne ... sens le c'est le même schéma.
Les auxiliaires modaux, heureusement, ne sont pas traités comme des points de vue et n'affectent pas la collection.
Que de l'information supplémentaire pour le post précédent.
Une histoire de la pile est toujours liée à un "ion-nav-vue" modèle". Ainsi la racine de l'histoire de la pile est créé pour la première "ion-nav-vue" de l'élément.
Si vous prévoyez sur l'utilisation de l'histoire des piles je vous conseille de toujours établir un lien entre l'ion-nav-afficher le nom de:
<ion-nav-view name="default"></ion-nav-view>
au lieu de<ion-nav-view></ion-nav-view>
Dans ce CodePen vous avez un RootStack pour les pages à onglet et les autres pages (nommé "onglets", "autres", "les autres1"), puis dans l'onglet pages que vous avez un substack pour chaque onglet.
L'onglet pages et des pages d'exécuter à l'intérieur de la Racine ion-nav-vue. Au cours de mes tests, j'ai besoin d'assigner un nom à la racine ion-nav-vue et faire référence à ce nom de la vue dans le contrôleur. Sinon, la pile a toujours été recréé lors de la commutation entre les pages principales (Autres => Onglets => Autres => ..)
Html pour la Racine de la Pile:
Contrôleur:
À l'intérieur de la onglets modèle je me suis assigné une nouvelle ion-nav-affichage de l'onglet différent piles (comme il est fait dans le défaut ionique onglets modèle)
Par exemple pour la maison-onglet (et à la maison de la pile) le code Html ressemble à ceci (pages d'accueil, des faits):
Contrôleur:
J'ai également déposé un rapport de bug pour le codepen ci-dessus. C'est à tort de passer à travers les histoires.
https://github.com/driftyco/ionic/issues/4086
Je ne suis pas sûr de mon fix bien que.
Peut-être que l'histoire de la fonctionnalité doit être repensé, plus globalement, pour traiter de questions ..