我今天应该使用哪个JavaScript hashchange / history库(2011)?

时间:2011-10-14 13:35:07

标签: javascript backbone.js history.js hashchange jquery-bbq

1)我的JavaScript应用程序应使用哪种JavaScript hashchange / history库/方法?
2)如何使用该方法实现这三件事?

A)页面加载时我想解析url hash / parameters并设置初始应用程序状态。
具体来说,我的应用程序由一个Backbone Collection和两个模型组成,这两个模型具有selectedCountry,selectedYear等属性 (我认为我不能使用Backbone.Router,因为这是一个具有复杂状态的非常自定义的可视化应用程序?)

B)我想设置一个hashchange侦听器或类似的东西,让我可以相应地更新app状态

C)关于Backbone Collection更改事件我想更新网址。重要提示:我想在执行此操作时暂时删除hashchange侦听器,以便没有反馈循环。

注意: 该应用程序已经依赖于一些HTML5技术,因此解决方案不必与旧版浏览器兼容......但“反馈循环”部分非常重要,因为我之前一直在努力解决这个问题......

谢谢:)

1 个答案:

答案 0 :(得分:3)

既然你已经使用了Backbone,我会坚持使用Backbone的Router对象。使用应用程序中已有的内容会更容易,而不是尝试在混合中添加新内容。

至于你的反馈循环问题,我已经通过never firing my router methods from code解决了这个问题。

它的要点是我让我的JavaScript对象控制应用程序的状态,并为我做的工作。当我打电话给router.navigate时,我从不传递true作为第二个参数。我只调用router.navigate来响应我的应用程序中的状态更改,以在浏览器窗口中更新哈希片段。事情就是这样:这纯粹是对应用程序状态发生变化的回应。我从不使用router.navigate来更改应用的状态。

希望有所帮助