routes backbone - détection du bouton de retour du navigateur
Je suis en train d'essayer de trouver un moyen de détecter si l'utilisateur a appuyé sur l'arrière /vers l'avant le bouton du navigateur.
Je suis à l'aide d'épine dorsale pour gérer les routes, le long de avec d'épine dorsale pour le rendu de mon point de vue.
Le problème est que je ne peux pas accrocher dans cette page événement de changement de n'importe où.
J'ai essayé de mettre une bûche dans ma fonction d'initialisation de mon point de vue .. mais il n'est pas déclenché lorsque j'utilise le bouton de retour.
Je ne suis pas vraiment sûr de savoir comment le reste de détecter ce changement de page.
source d'informationauteur samccone | 2012-04-19
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
Backbone.Router
et assurez-vous que vous n'oubliez pasBackbone.history.start()
lors du démarrage de votre application.Quelques informations utiles peuvent être trouvées ici et ici
En fait le deuxième lien n'est pas un article, mais un blog. Et le mec qui a écrit ça vraiment l'air d'en savoir beaucoup sur le sujet.
UPD: l'idée est que L'épine dorsale du routeur d'incendie lié méthodes lors de votre url en train de changer. Donc, vous ne devriez mettre votre logique de cette méthode et de cette façon vous serez en mesure de suivre. Peut-être qu'il n'est pas automatique, et ça va prendre pour écrire un peu de code, mais je pense que cela devrait fonctionner.
Vous pouvez lier un rappel à l'épine Dorsale
route
événement:Vous pouvez utiliser
Backbone.history.getFragment()
de connaître ont été, vous êtes debout.Lorsque le bouton de retour est appuyé sur un popstate événement est déclenché.
J'utilise ce bout de code:
vous pouvez étendre la
Backbone.Router
et la surcharge de laroute
et laopen
méthode. Vous disposez de tous page relèves traitées dans ces deux méthodes. Donc, juste recopier à partir de l'épine dorsale de fichier, et de jouer avec elle.Évidemment, même GitHub ne sais pas comment détecter quel bouton a été pressé 😉
Ils utilisent ce code: