2011-11-21 15 views
8

Necesito una solución de enrutamiento del lado del cliente para trabajar con una aplicación de Chrome. He investigado varios y crossroads.js parece una buena opción. Cuando lo incluyo en mi archivo html, parece que no funciona; es decir, si uso un código comoEnrutamiento del lado del cliente. ¿Como funciona?

crossroads.addRoute('/news/{id}', function(id){ 
    alert(id); 
}); 
crossroads.parse('/news/123'); 

, las alertas página '123', pero si escribo '/ noticias/321' en la barra de direcciones del navegador, preformas acción por defecto del navegador, en lugar de alertar '321 '. Qué estoy haciendo mal. (Además, me doy cuenta de que el título es amplio, pero creo que las dificultades que estoy teniendo con crossroads.js son más generales que crossroads.js en particular. Se da como ejemplo.)

+0

cuando vaya a/noticias/123 Qué se vaya a una página real? o es parte de una etiqueta de anclaje para ajax? – topherg

+0

@cgoddard Estoy usando Chrome y solo hace una búsqueda en google para "/ noticias/123" – danwoods

+0

con el dominio ... – topherg

Respuesta

8

Use Hasher (por el mismo autor) también.

La documentación en la página Crossroads le indica que debe usar Hasher, (porque se usará para supervisar la barra de ubicación de virado).

Así que también necesitaría usar Hasher e inicializarlo, luego puede agregar sus rutas de "Encrucijada" a Hasher para comenzar a monitorear esas rutas en particular.

//setup crossroads 
crossroads.addRoute('foo'); 
crossroads.addRoute('lorem/ipsum'); 
crossroads.routed.add(console.log, console); //log all routes 

//setup hasher 
hasher.initialized.add(crossroads.parse, crossroads); //parse initial hash 
hasher.changed.add(crossroads.parse, crossroads); //parse hash changes 
hasher.init(); //start listening for history change 

//update URL fragment generating new history record 
hasher.setHash('lorem/ipsum'); 

http://millermedeiros.github.com/crossroads.js/

+0

No creo que Hasher tenga ningún uso para el PO. – ericosg

+0

whatch out para https://github.com/millermedeiros/crossroads.js/issues/47 prototype.apply tiene el tipo incorrecto – roo2

6

El comando parse dice cruce a echar un vistazo a la cuerda y hacer una acción basada en ella.

Entonces en el caso de crossroads.parse('/news/123'); siempre usará /news/123.

Puesto que desea cruce de caminos para analizar lo que tiene en la barra de direcciones del navegador, tendrá que utilizar ese valor en el método de análisis:

crossroads.parse(document.location.pathname); 
+4

alternativamente, para incluir su cadena de consulta, 'crossroads.parse (document.location.pathname + document.location .search) ' – casey

Cuestiones relacionadas