Backbone路由器的替代品没有哈希回退和更好的后退/前进状态支持?

时间:2014-02-07 09:06:14

标签: backbone.js pushstate backbone-routing

我目前正在为我的SPA使用Backbone路由器。它有点好用,但我遇到了一些小问题:

问题是 - 我想要pushState导航或,这意味着 - 应用状态被执行(当我将“初始”URL传递给路由器或我触发了途径通过JS),但地址栏不会改变。我不希望IE9的hashChange回退。如果IE9没有获得后退按钮和更改的地址栏,它仍将正常工作,但仍保留应用程序中的导航状态。然后,我可以向用户显示他们可以加入书签的URL,服务器将路由该页面,并且应用程序状态将根据初始URL进行引导。在应用内导航期间,IE中的地址栏没有变化,这是我愿意接受的妥协。

我遇到的另一个问题是我使用navigate(url, {trigger: true})来拦截我的HREF,后退按钮不起作用(什么都不做)。但是我真的需要在前进/后退导航中更改应用状态,即使它为特定URL重建了 - 我宁愿重建状态。

对于我可以使用的路由器,我有哪些选择?就像我说的,我不想有hashbang回退(意思是 - 我只想在应用程序,句点中有一种表示URL的方式)。

我应该使用什么? Director.js? History.js?似乎有相当多的路由器/历史库,但哪一个最接近我正在寻找的?...

1 个答案:

答案 0 :(得分:2)

假设您有Modernizr围绕扫描HTML5历史记录支持,如果我理解的话,在主要布局js文件中,快速解决方案不能添加为事件

'click a' : "navigate"

并添加功能导航到此布局,如下所示

navigate : function(e){
    if(!Modernizr.history) document.location.href = $(e.currentTarget).attr("href");
},

要进行优化,您当然可以仅在不支持历史记录的情况下绑定它,不要忘记在您的布局中包含“modernizr”。希望这对你来说是一个有趣的答案..