2012-04-14 64 views
10

我有以下問題。我的主幹應用程序的某些部分有網址,如:Backbone.js和主要哈希

site.ru/#profile 

當加載頁面URL修改:

site.ru/profile 

因此,哈希丟失。所以,我看到骨幹導航功能的問題:

var routeStripper = /^[#\/]/; 
... 
var frag = (fragment || '').replace(routeStripper, ''); 

據我瞭解這段代碼乾淨的哈希在開始的URL。

是否真的簡單地刪除這一行代碼來解決問題?你能否告訴我一些其他解決方法?

TIA!

回答

12

如果啓用pushState,主幹只會刪除散列。

變化Backbone.history.start({pushState: true});Backbone.history.start();

http://backbonejs.org/#Router

+0

是的,我使用pushState = true。如果我刪除pushState我鬆了什麼? – dizpers 2012-04-15 03:18:37

+0

所有pushState控件都是在支持History API的瀏覽器上使用基於哈希的URL。 – abraham 2012-04-15 04:16:20

0

似乎Backbone.js的使用/ & 作爲分隔符,以拉出根地址&子目錄。過濾需要tp stau tp獲取「片段」。嘗試刪除該RegEx中的#,但將該行的其餘部分留在那裏。 (&在代碼中留下評論,你已經這樣做:) :)

我也會提交一個錯誤報告,因爲它重新發送沒有散列的鏈接。

+0

順便說一句,你應該標記這個JavaScript也可能RegEx。 – tomByrer 2012-04-14 17:43:36

+3

您可以使用Backbone.history.start({pushState:true,hashChange:false});保持pushState並仍然使用哈希 – TYRONEMICHAEL 2014-02-20 08:50:34

0

有同樣的問題,和其他一些與我們;-)(見GitHub issue)由不聽哈希

我已經解決了這個問題,現在變化如下:

Backbone.history.start({ 
    pushState: true, 
    hashChange: false, 
    root: '/' 
}); 

這似乎對我很有用。