3 votes

comment changer l'historique du navigateur sans aller à l'endroit/activité de départ (gwt)

Dans mon application, j'ai une activité/un lieu relativement complexe. La résolution de l'état (du jeton d'historique au modèle) au début de l'activité provoque quelques interactions avec le serveur. Lors des interactions avec l'utilisateur, l'activité ne met à jour que les parties nécessaires du modèle et évite donc certaines interactions avec le serveur - l'activité/modèle a un état interne.

Existe-t-il un moyen de refléter l'état dans l'historique du navigateur sans (re)démarrer l'activité ? ( History.newItem(token) provoque également le début de l'activité)

UPDATE La solution de Chris fonctionne "presque" mais un autre problème est apparu : dans mon interface, j'ai un bouton de réinitialisation (un lien vers l'emplacement avec un jeton vide). Si je clique autour de l'interface, le jeton est bien mis à jour mais maintenant le bouton de réinitialisation ne fonctionne pas. gwt pense qu'il est au même endroit et ignore donc le clic de réinitialisation. Avant cela, le problème était presque le même : le jeton et le lieu ne changeaient pas et donc le bouton de réinitialisation ne fonctionnait pas non plus. GWT enregistre cela comme "Demandé de retourner au même endroit".

Existe-t-il donc un moyen de laisser gwt relancer l'activité sans tenir compte de l'équivalence de lieu ?

3voto

Thomas Broyer Points 45499

Allez dans un nouvel endroit, mais ayez votre ActivityMapper retournent la même instance d'activité. De cette façon, l'activité n'est pas redémarrée.
Vous devez cependant trouver un moyen de mettre à jour l'activité lorsque le lieu change à partir d'un autre moyen (par exemple l'historique du navigateur). Voir GWT MVP : mise à jour de l'état de l'activité en cas de changement de place par exemple.

2voto

Chris Lercher Points 22134

Il y a une semi-solution, et bien que je je ne veux pas le recommander j'aimerais l'ajouter ici - juste pour mettre en garde contre les inconvénients de cette solution :

Vous pouvez ajouter des jetons à l'historique sans déclencher d'événement en appelant History.newItem(token, false) .

Il s'agit d'une semi-solution, car :

  • Cela fonctionne correctement (tant que vous construisez vos jetons correctement).
  • Une partie du problème de performance est également résolue : L'activité ne sera pas redémarrée lors de l'ajout du jeton à l'historique.
  • Toutefois, si l'utilisateur revient en arrière et avance dans l'historique, le problème de performance persistera (car les événements seront alors déclenchés à nouveau).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X