web-dev-qa-db-fra.com

Backbone.js - navigation vers un itinéraire après l'événement "clic" sur une vue

Ma "vue" est configurée comme ci-dessous. simple.

var ItemView = Backbone.View.extend({
  tagName : "li",

  events : {
    "click" : "display"
  },

  display : function() {
    //app.navigate('item'); // take me to my route!
  }
});

Et j'ai mon routeur

var App = Backbone.Router.extend({

  routes: {
    "" : "index",
    "item" : "view_item"
  },

  index: function() {
    alert('hi!');
  },

  view_item: function() {
    alert('bye!');
  }
});

app = new App();
Backbone.history.start();

Maintenant, quand je clique sur ItemView, il devrait exécuter la méthode "display" et je veux que la méthode d'affichage me conduise à la route que j'ai spécifiée dans routes "item".

Est-ce possible? Je pensais que la fonction "naviguer" fonctionnerait, mais pas. Comment pourrais-je y parvenir?

30
ericbae
 display : function() {
    app.navigate('item', true);
  }

Le deuxième paramètre doit être défini sur true.

De la documentation de Backbone:

navigaterouter.navigate (fragment, [triggerRoute]) Chaque fois que vous atteignez un point de votre application que vous souhaitez enregistrer en tant qu'URL, appelez browse pour mettre à jour l'URL. Si vous souhaitez également appeler la fonction route, transmettez triggerRoute.

49
Skylar Anderson

Ou vous pouvez le faire directement à partir du code HTML, si vous utilisez la balise "<a>".

exemple:

<a href="#item">Show Itens</a>

Cela fonctionne aussi, je préfère cette façon quand bien sûr est possible.

0
rcarvalho