Passing query parameters using Router.go in iron router

不想你离开。 提交于 2019-12-03 17:15:40

问题


I am trying to pass query parameters in Router.go like below:

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

But this does not change the url, it stills loads current path without query string only. But if I add the query parameter manually to path like:

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

this works fine. But since I am trying to load same page with some filtered data. So clicking filter button repeatedly appends the filter string again and again to path.

What is the correct way of passing query string using iron router?


回答1:


Right there in the docs

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

The above JavaScript will navigate to this url:

/post/1?q=s#hashFrag

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




回答2:


The parameters are Router.go(path, params, options). The query part should go in the options parameter, so try the following: Router.go(path, {}, {query: {filter: 'filter='+filter}}).

EDIT

Answer updated according to Robins comment below.




回答3:


I found that if your first parameter in Router.go is a path, instead of a template name, the query filter is not passed. Use a template name:

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



回答4:


Try this:

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

That should give you the path without the query string attached.



来源:https://stackoverflow.com/questions/25549494/passing-query-parameters-using-router-go-in-iron-router

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!