1)我的JavaScript应用程序应使用哪种JavaScript hashchange / history库/方法?
2)如何使用该方法实现这三件事?
A)页面加载时我想解析url hash / parameters并设置初始应用程序状态。
具体来说,我的应用程序由一个Backbone Collection和两个模型组成,这两个模型具有selectedCountry,selectedYear等属性
(我认为我不能使用Backbone.Router,因为这是一个具有复杂状态的非常自定义的可视化应用程序?)
B)我想设置一个hashchange侦听器或类似的东西,让我可以相应地更新app状态
C)关于Backbone Collection更改事件我想更新网址。重要提示:我想在执行此操作时暂时删除hashchange侦听器,以便没有反馈循环。
注意: 该应用程序已经依赖于一些HTML5技术,因此解决方案不必与旧版浏览器兼容......但“反馈循环”部分非常重要,因为我之前一直在努力解决这个问题......
谢谢:)
答案 0 :(得分:3)
既然你已经使用了Backbone,我会坚持使用Backbone的Router
对象。使用应用程序中已有的内容会更容易,而不是尝试在混合中添加新内容。
至于你的反馈循环问题,我已经通过never firing my router methods from code解决了这个问题。
它的要点是我让我的JavaScript对象控制应用程序的状态,并为我做的工作。当我打电话给router.navigate
时,我从不传递true
作为第二个参数。我只调用router.navigate
来响应我的应用程序中的状态更改,以在浏览器窗口中更新哈希片段。事情就是这样:这纯粹是对应用程序状态发生变化的回应。我从不使用router.navigate
来更改应用的状态。
希望有所帮助