Предаване на параметри на заявката с помощта на Router.go в железния рутер

Опитвам се да предам параметри на заявката в Router.go, както е показано по-долу:

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

Но това не променя URL адреса, но все още зарежда текущия път само без низ на заявка. Но ако добавя параметъра на заявката ръчно към път като:

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

това работи добре. Но тъй като се опитвам да заредя същата страница с някои филтрирани данни. Така че щракването върху бутона за филтриране многократно добавя филтърния низ отново и отново към пътя.

Какъв е правилният начин за предаване на низ на заявка с помощта на железен рутер?


person Aashu Agarwal    schedule 28.08.2014    source източник
comment
може ли отговорът ми да бъде приет?   -  person Max Hodges    schedule 10.12.2019


Отговори (4)


Точно там в документите

Router.go('post.show', {_id: 1}, {query: 'q=s', hash: 'hashFrag'});

Горният JavaScript ще навигира до този url:

/post/1?q=s#hashFrag

https://github.com/iron-meteor/iron-router/blob/devel/Guide.md#named-routes

person Max Hodges    schedule 06.06.2015

Параметрите са Router.go(path, params, options). Частта на заявката трябва да влезе в параметъра options, така че опитайте следното: Router.go(path, {}, {query: {filter: 'filter='+filter}}).

РЕДАКТИРАНЕ

Отговорът е актуализиран според коментара на Робинс по-долу.

person Peppe L-G    schedule 28.08.2014
comment
Опитах това, но страницата не се зарежда отново с параметри на заявката - person Aashu Agarwal; 02.09.2014
comment
Този отговор е почти правилен. заявката трябва да бъде низ като Router.go(path, {}, {query: "filter=filter"}). От изходен ред 220 на Iron Router github.com/iron- meteor/iron-router/blob/devel/lib/ - person Robin; 28.05.2015
comment
Хехе, 5 пъти гласуван отговор и е грешен ;P Но добра уловка, това трябва да обясни защо не проработи за Aashu. - person Peppe L-G; 29.05.2015

Открих, че ако първият ви параметър в Router.go е път, вместо име на шаблон, филтърът на заявката не се предава. Използвайте име на шаблон:

Router.go(templatename, {_id: 1}, {query: 'q=s', hash: 'hashFrag'}); 
person dpatte    schedule 25.07.2015
comment
Много ми помогна! - person rahulserver; 08.11.2017

Опитайте тази:

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

Това трябва да ви даде пътя без прикачения низ за заявка.

person richsilv    schedule 28.08.2014