2014-06-06 60 views
3

我有一個使用iron-router的Meteor應用程序,它顯示選項卡中的名單(example here)。我希望網址包含一個取決於哪個標籤顯示的散列,即。 http://example.com/myrosters#first如何在流星鐵路由器中爲URL添加哈希值?

我有事件代碼,如:

Template.roster.events({ 
'mousedown .nav-tabs li a': function (evt) { 
     # want to set the URL here 
    } 
}); 

我如何在這裏設置的URL包括散列,實際上並沒有引發不必要的頁面重載? (我相信Router.go()會觸發頁面重新加載。)

謝謝!

回答

4

如果路徑保持不變,那麼看起來go不會重新加載頁面。

Router.go(window.location.pathname+"#test3") 

當我執行上面的,我看到開發商控制檯的網絡選項卡上沒有活動,所以我覺得這個應該符合您的需求。相反Router.go的

+0

謝謝。這看起來很有前途,並且不會重新加載,但是我發現在我的情況下,它不會在URL的末尾添加'#test3' - 有時'#test3'會在那裏短暫地閃爍,再次消失。作爲一個測試,如果我用'Router.go(another_page)'替換命令,它會指引我到另一個頁面。有任何想法嗎?謝謝! –

+0

我也嘗試過'window.location.hash =「test3」;',並看到相同的結果 - '#test3'有時會在URL末尾短暫閃爍,但不會停留在那裏。 –

+0

我無法重現您描述的行爲。在我的系統上,它保持不變(linux + chrome)。你在使用哪種瀏覽器和操作系統? –

0

您可以使用Router.url

Router.url( 'yourrouterpathname',{_id:ID},{查詢: 'Q = S',哈希:「 hashFrag'});