2012-03-06 14 views
6

Creo que me faltan algunos conceptos básicos sobre las funciones de enrutamiento de Backbone.Backbone JS Routing no funciona como esperaba

Estoy construyendo una aplicación y se ve algo así:

file: app.js

App = {} 
App.nav = new Backbone.Router; 
require('app/controller'); 

file: controller.js

App.nav.route('home', 'home', function() { 
    console.log("Home Activated"); 
}); 

App.navigate('home'); 

En este punto el navegador cambia la dirección URL en la barra de direcciones para /home pero no ocurre nada y no recibo el mensaje de la consola Home Activated.

He intentado utilizar mi propia clase de enrutamiento (es decir, Backbone.Router.extend({})), pero realmente no veo un punto en él ya que aún necesito inicializarlo, y quiero usar un historial/navegación central en mi aplicación que todos los módulos/controladores agregan enrutamiento a él en lugar de crear un enrutador para cada controlador.

¿Qué estoy haciendo mal?

Respuesta

15

http://documentcloud.github.com/backbone/#Router-navigate

De la documentación:

Si desea también llamar a la función de ruta, establezca la opción de disparo en true.

¡Pero como escribió OlliM, primero debe activar el historial!

Así que su respuesta debe ser:

Backbone.history.start(); 
App.nav.navigate('home', {trigger: true}); 

edición: se olvidó de poner "nav"

+1

'{gatillo: true} 'no es parte de la solución aquí. Backbone se activará por defecto: verdadero si no se especifican opciones. Aquí está el fragmento de código: 'navigate: function (fragment, options) { if (! History.started) return false; if (! Options || options === true) options = {trigger: !! options}; ' – Kinergy

+0

Tu enlace tiene 404'd. – NuclearPeon

1

sólo quiero señalar esto, ya que me salvó un mundo de dolor y angustia.

Si está enviando a una página personalizada, como

Backbone.router.navigate('/some/page'); // does not work 

y parece no estar funcionando. Añadir un terminador '/'

Backbone.router.navigate('/some/page/'); // works 

Esto me costó unas pocas horas de resolución de problemas ...

Cuestiones relacionadas