1)我应该为我的JavaScript应用程序使用哪个JavaScript hashchange/history库/方法?
2)我如何用这种方法实现这3件事?
A)当页面加载时,我想解析url哈希/参数并设置初始应用程序状态
具体来说,我的应用程序由一个带有两个模型的Backbone Collection组成,这些模型具有selectedCountry、selectedYear等属性。
我想我不能用脊梁。路由器,因为这是一个非常自定义的可视化应用程序,具有复杂的状态?)
B)我想设置一个hashchange侦听器或类似的,让我相应地更新应用程序状态
C)关于主干集合更改事件,我想更新url。重要:我希望在执行此操作时临时删除hashchange侦听器,以便没有反馈循环。
注意:该应用已经依赖于一些HTML5技术,所以解决方案不必与旧的浏览器兼容。但是"反馈循环"部分很重要,因为我以前就在这个问题上挣扎过……
谢谢:)
既然你已经在使用Backbone,我会坚持使用Backbone的Router
对象。使用你的应用程序中已经可用的东西会更容易,而不是试图在混合中引入一些新的东西。
至于你的反馈循环问题,我已经通过从不从代码中触发我的路由器方法来解决这个问题。
它的要点是我让我的JavaScript对象控制应用程序的状态,并为我完成工作。当我调用router.navigate
时,我从不传递true
作为第二个参数。我只调用router.navigate
来响应我的应用程序中的状态变化,以更新我的浏览器窗口中的哈希片段。事情是这样的:这纯粹是对应用程序状态发生变化的响应。我从来没有使用router.navigate
来改变我的应用程序的状态。
希望有帮助