37 votes

Backbone.js et pushState

Si j'active PushState dans le routeur de réseau principal, dois-je utiliser return false sur tous les liens ou le réseau principal gère-t-il cela automatiquement? Existe-t-il des exemples, la partie html et la partie script?

67voto

ggozad Points 8910

C'est le modèle Tim Branyen utilise dans son passe-partout:

initializeRouter: function () {
  Backbone.history.start({ pushState: true });
  $(document).on('click', 'a:not([data-bypass])', function (evt) {

    var href = $(this).attr('href');
    var protocol = this.protocol + '//';

    if (href.slice(protocol.length) !== protocol) {
      evt.preventDefault();
      app.router.navigate(href, true);
    }
  });
}

En utilisant cela, plutôt qu'individuellement faire preventDefault sur les liens, vous laisser le routeur de la poignée par défaut et faire des exceptions en ayant un data-bypass d'attribut. Dans mon expérience, il fonctionne bien comme un modèle. Je ne sais pas du tout, de grands exemples autour, mais l'essayer vous-même ne devrait pas être trop dur. Épine dorsale de la beauté réside dans sa simplicité ;)

9voto

mynameistechno Points 742
 $(document.body).on('click', 'a', function(e){
   e.preventDefault();
   Backbone.history.navigate(e.currentTarget.pathname, {trigger: true});
 });

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