2016-07-25 1 views
1

J'ai le problème suivant dans une application angulaire: - la première page est une page de recherche, avec un formulaire et une liste de recherche. Les résultats de la recherche sont paginée, il y a un bouton "afficher plus" qui affiche les 10 prochains résultats - en cliquant sur un résultat apporte à la deuxième page, avec des informations détaillées sur l'élément (juste un comportement de recherche classique).Angulaire: retour à la liste après avoir sélectionné un élément

Maintenant, mon problème est le suivant: à partir de la page d'élément, cliquer sur le bouton RETOUR du navigateur amène l'utilisateur à la page de recherche, mais la recherche est perdue.

J'ai mis en place un cache, afin que le formulaire soit stocké dans un service - de cette façon, je peux relancer la recherche automatiquement. Mais dans ce cas, le défilement est perdu et seuls les dix premiers résultats sont affichés (pagination est perdue).

Cette seule solution que je vois est d'ajouter une entrée dans l'historique chaque fois que le bouton "show more" est cliqué, mais je devrai également enregistrer quelque part le niveau de défilement de la fenêtre. Je trouve cette solution assez compliquée et agaçante, pas belle.

La question est donc: existe-t-il un moyen commun et plus facile de le faire?

Je pense que c'est un problème habituel de l'application ajax/angulaire, dans deezer quand je sélectionne un album j'ai le même).

Répondre

0

Cela doit être géré via les paramètres url ... Le routeur d'application doit pouvoir demander un état d'application déterminé. Vous devez gérer les résultats de recherche côté client lorsque vous gérez les résultats de recherche côté serveur. Un exemple pourrait être: Que se passe-t-il si quelqu'un partage vos résultats de recherche par courrier?

C'est pourquoi tout ce qui concerne l'état d'application doit être maintenue sur l'url: http://myapp.com/search?page=1&...

Structurer votre application ainsi la btn history.back du navigateur fait exactement ce que vous recherchez.

+0

Merci pour vos commentaires, c'est vraiment utile, j'ai commencé à implémenter ces paramètres. Cependant, avez-vous une idée pourquoi, avec l'application ajax, nous ne pouvons pas utiliser le cache du navigateur? Par exemple avec l'application JSF quand vous revenez dans l'historique, il n'y a pas de nouvelle requête qui utilise uniquement le cache local (cf http://stackoverflow.com/questions/15493276/browser-back-button-navigation) – Rolintocour

+0

Je ne connais pas Java Server Faces, mais cela ne veut pas dire ... Le cache du navigateur dépend des navigateurs, pas des serveurs ou des frameworks, et il est toujours utilisé, beaucoup de requêtes sont ignorées en fonction du ** HTTP ETag ** ... probablement , votre application n'est pas optimisée pour cela. Si vous ouvrez les outils de développement, dans le panneau de réseau, vous pouvez voir comment les ressources sont chargées et leurs codes d'état: 304 signifie généralement que les ressources ne sont pas modifiées et pourraient être utilisées dans la version locale. La mise en cache des clients doit être optimisée via le cache des applications HTML5 et les techniciens de service. – Hitmands