2012-04-14 24 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: '/' 
}); 

这似乎对我很有用。