2014-08-28 165 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