2011-11-21 22 views
8

Ho bisogno di una soluzione di routing lato client per lavorare con un'app Chrome. Ho studiato diversi e crossroads.js sembra una buona misura. Quando lo includo nel mio file html, non sembra funzionare; vale a dire, se uso un codice simileInstradamento lato client. Come funziona?

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

, nella pagina avvisi '123', ma se di tipo I '/ notizie/321' nella barra degli indirizzi del browser, è preforme azione di default del browser, invece di allertare '321 '. Che cosa sto facendo di sbagliato. (Inoltre, mi rendo conto che il titolo è ampio, ma le difficoltà che sto attraversando con crossroads.js sono più generali di crossroads.js in particolare. Viene fornito come esempio.)

+0

quando si va a/notizie/123 lo fa passare alla una pagina vera? o fa parte di un tag di ancoraggio per ajax? – topherg

+0

@cgoddard Sto usando Chrome e fa solo una ricerca su google "/ news/123" – danwoods

+0

con il dominio ... – topherg

risposta

8

Usa Hasher (di stesso autore) anche.

La documentazione sulla pagina di Crossroads indica che è necessario utilizzare Hasher (poiché verrà utilizzato per monitorare la barra widow.location).

Quindi è anche necessario utilizzare Hasher e inizializzarlo, quindi è possibile aggiungere i percorsi "Incrocio" a Hasher per avviare il monitoraggio di quei percorsi particolari.

//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

Non credo che Hasher abbia qualche utilità per l'OP. – ericosg

+0

whatch out per https://github.com/millermedeiros/crossroads.js/issues/47 prototype.apply ha il tipo errato – roo2

6

Il comando parse dice crocevia di avere uno sguardo alla corda e fare un'azione basata su di esso.

Quindi nel caso di crossroads.parse('/news/123'); utilizzerà sempre /news/123.

Dal momento che si desidera bivio per analizzare quello che hai nella barra degli indirizzi del browser, è necessario utilizzare tale valore nel metodo parse:

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

in alternativa, per includere la stringa di query, 'crossroads.parse (document.location.pathname + document.location .search) ' – casey