2014-08-28 126 views
8

我试图传递查询参数在Router.go象下面这样:传递查询参数

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

但这并不更改URL,它剧照负载电流路径,而不查询字符串只要。但如果我手动添加查询参数路径如:

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

这工作正常。但因为我正在尝试加载一些过滤的数据相同的页面。因此,单击过滤器按钮不断重复将过滤器字符串附加到路径。

使用铁路路由器传递查询字符串的正确方法是什么?

回答

0

试试这个:

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

这应该给你的路径没有附加的查询字符串。

4

参数是Router.go(path, params, options)。查询部分应该在options参数中,因此请尝试以下操作:Router.go(path, {}, {query: {filter: 'filter='+filter}})

编辑

答案按照以下罗宾斯评论更新。

+0

我试过,但页面不具有查询重新加载参数 – 2014-09-02 10:51:18

+6

这个答案几乎是正确的。查询需要像'Router.go(path,{},{query:“filter = filter”})''这样的字符串。来自铁路路由器源代码行220 https://github.com/iron-meteor/iron-router/blob/devel/lib/router_client.js – Robin 2015-05-28 18:13:21

+0

Hehe,5倍投票答案,这是错误的; P但好抓,这应该解释为什么它不适用于Aashu。 – 2015-05-29 06:15:42

2

我发现,如果你Router.go第一个参数是路径,而不是模板名称,则不会传递查询过滤器。使用模板名称:

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

帮了我很多! – rahulserver 2017-11-08 18:29:48