2014-08-28 2 views
8

Sto cercando di passare i parametri di query in Router.go come di seguito:passaggio di parametri di query utilizzando Router.go nel router ferro

var filter = 'abc'; 
var path = Router.current() && Router.current().path; 
Router.go(path, {query: {filter: filter}}); 

Ma questo non cambia l'url, alambicchi carichi percorso corrente senza stringa di query solo. Ma se aggiungo manualmente il parametro di query a path come:

Router.go(path+'?filter='+filter); 

questo funziona bene. Ma dal momento che sto cercando di caricare la stessa pagina con alcuni dati filtrati. Pertanto, facendo clic sul pulsante del filtro, si accoda ripetutamente la stringa di filtro su percorso.

Qual è il modo corretto di passare la stringa di query utilizzando il router di ferro?

risposta

0

Prova questo:

var path = Router.current() && Router.current().route.originalPath; 

Questo dovrebbe darvi il percorso senza la stringa di query in allegato.

4

I parametri sono Router.go(path, params, options). La parte della query dovrebbe andare nel parametro options, quindi provare quanto segue: Router.go(path, {}, {query: {filter: 'filter='+filter}}).

EDIT

risposta aggiornato in base a Robins commento qui sotto.

+0

Ho provato questo, ma la pagina non viene caricata con parametri di query –

+6

Questa risposta è quasi corretta. la query deve essere una stringa come 'Router.go (path, {}, {query:" filter = filter "})'. Dalla linea di fonti Iron Router 220 https://github.com/iron-meteor/iron-router/blob/devel/lib/router_client.js – Robin

+0

Hehe, una risposta votata 5 volte, ed è sbagliato; P Ma buona cattura, questo dovrebbe spiegare perché non ha funzionato per Aashu. –

2

ho scoperto che se il primo parametro è un Router.go percorso, anziché il nome di un modello, il filtro di query non viene passato. Utilizzare un nome modello:

Router.go(templatename, {_id: 1}, {query: 'q=s', hash: 'hashFrag'}); 
+0

Mi ha aiutato molto! – rahulserver