Déclenchez la même route de localisation

Existe-t-il un moyen de déclencher la même route d'emplacement dans backbone.js, par exemple lorsque l'emplacement est /My/App/#/About et l'utilisateur clique à nouveau sur l'ancre avec la même route pour actualiser le contenu de la page.

 Router.navigate('about', true); 

De cette façon, vous pouvez déclencher manuellement un itinéraire.

 Backbone.history.loadUrl(Backbone.history.fragment); 

La solution pour votre problème spécifique n'est pas vraiment documentée et il semble que la meilleure pratique suggérée soit d'appeler simplement la fonction déclarée dans l'itinéraire que vous souhaitez déclencher: /

Ref: https://github.com/documentcloud/backbone/issues/1214

Jusqu'à présent, les autres réponses sont correctes, mais ils ont oublié de mentionner que si le hachage navigué vers le bas est le même que le hachage actuel, rien n'allumera.

En supposant que vous souhaitez le faire pour plus que la page About, utilisez:

 route = Backbone.history.fragment; yourRouter.navigate(route, true); 

Étant donné que le routeur Backbone recherche les changements dans le fragment d'URL que vous souhaitez charger, ce qui a fonctionné pour moi est de naviguer vers '/' d'abord sans déclencheur, puis ensuite vers l'URL (fragment) que vous souhaitez frapper avec le déclencheur. Vous pourriez probablement construire cela dans le comportement par défaut du routeur assez facilement si vous le souhaitez.

par exemple

 App.Routers.appRouter.navigate '/', {trigger: false} App.Routers.appRouter.navigate myPath, {trigger: true} 

En utilisant Backbone 0.9.2, vous passez un objet d'options et définissez 'trigger' sur 'true'.

 router.navigate('some/route', { trigger : true }); 

Référence: http://documentcloud.github.com/backbone/#Router-navigate

Une autre option: vous pouvez ajouter un paramètre avec une valeur aléatoire, donc hash sera différent pour chaque appel, même si vous appelez la même page.

Merci pour la suggestion @eddywashere, vraiment génial. J'ai ajouté une petite édition à la mienne qui vérifie si vous êtes sur la dernière URL (la plus récente) et, si c'est le cas, charge cette histoire. Assez simple, pensé que cela pourrait aider quelqu'un avec le même problème.

 $("[data-href]").on("click", function(e) { var href; e.preventDefault(); href = $(e.currentTarget).data("href"); if ((_.last(this.history)) === href) { return Backbone.history.loadUrl(_.last(this.history)); } else { return this.router.navigate(href, true); } }); 

Router.navigate (route, {trigger: false}); // Change l'URL mais il ne déclenchera pas … Ex: Au lieu de l'itinéraire – 'about / 1' ou 'about' etc.

Backbone.history.loadUrl (Backbone.history.fragment); // L'itinéraire modifié sera déclenché ici.