2011-09-22 8 views
30

Mi "vista" se configura de la siguiente manera. sencillo.Backbone.js: navegando hacia una ruta después del evento "hacer clic" en una vista

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

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

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

Y tengo mi router

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(); 

Ahora, cuando hago clic en ItemView, se debe ejecutar el método "pantalla" y quiero que el método de visualización que me lleve a la ruta que se especifica en las rutas "ít".

¿Esto es posible? Pensé que la función "navegar" funcionaría, pero no es así. ¿Cómo podría lograr esto?

Respuesta

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

Necesita el segundo parámetro establecido en verdadero.

De la documentación Backbone:

navigaterouter.navigate (fragmento, [triggerRoute]) Cada vez que se llega a un punto en su aplicación que desea guardar como una URL, llame a navegar con el fin de actualizar la URL Si también desea llamar a la función de ruta, pase triggerRoute.

+7

Una forma alternativa de hacer lo mismo y que corresponde con los documentos de la red troncal: 'app.navigate ('item', {trigger: true});' – Daan

+3

Si no tiene el enrutador 'app' en el alcance, puede usar 'Backbone.history.navigate (url, options)' – LeeGee

0

O puede hacerlo directamente desde html, si está utilizando la etiqueta "< a>".

ejemplo:

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

También funciona, yo prefiero esta manera cuando por supuesto que es posible.

Cuestiones relacionadas