2012-04-27 4 views
11

Le routeur dans Backbone.js est responsable du routage des pages côté client et de les connecter aux actions et aux événements basés sur les URL. Mais comment déclencher le changement d'url? Je veux dire si la seule façon de le faire est de placer l'élément associé au routage de la page dans la balise <a>.Comment déclencher les événements Backbone.Router dans Backbone.js?

Parce que je l'ai associé la mousedown et mouseup événements avec l'élément utilisé pour le routage, si je le mets dans la balise <a>, le mousedown et mouseup événements vont certainement devenir invalide car elle aura conflit avec l'événement click <a> tag. Alors y a-t-il d'autres façons de faire le routage?

Répondre

31

Vous pouvez utiliser Router#navigate:

naviguerrouter.navigate(fragment, [options])

Chaque fois que vous atteignez un point dans votre application que vous souhaitez enregistrer comme une URL, appelez naviguer afin de mettre à jour l'URL Si vous souhaitez également appeler la fonction de routage, définissez l'option trigger sur true.

Donc, si votre routeur est r et que vous voulez activer la route pour #/some_route, vous pouvez:

r.navigate('some_route', { trigger: true }); 

Demo (ouvrir votre console s'il vous plaît): http://jsfiddle.net/ambiguous/xkZtB/

+0

Merci beaucoup pour ton aide! – chaonextdoor

+0

Encore une question, car je dois accéder aux données du modèle pour fournir l'identifiant de mon URL, comme 'category /: id'. Comment devrais-je faire ça? – chaonextdoor

+0

@chaonextdoor: Vous devriez être capable de construire la route appropriée sous la forme d'une chaîne et la passer à 'naviguer':' r.navigate ('category /' + m.get ('id'), {trigger: true}) ' –

Questions connexes