【发布时间】:2011-10-14 13:35:06
【问题描述】:
1) 我的 JavaScript 应用程序应该使用哪个 JavaScript hashchange/history 库/方法?
2)我如何使用该方法实现这三件事?
A) 当页面加载时,我想解析 url 哈希/参数并设置初始应用程序状态。
具体来说,我的应用程序由具有两个模型的主干集合组成,这些模型具有 selectedCountry、selectedYear 等属性。
(我不认为我可以使用 Backbone.Router,因为这是一个非常自定义的可视化应用程序,具有复杂的状态?)
B) 我想设置一个 hashchange 监听器或类似的监听器,让我相应地更新应用状态
C) 在 Backbone Collection 更改事件中,我想更新 url。重要提示:我想在执行此操作时暂时删除 hashchange 侦听器,以便没有反馈循环。
注意: 该应用程序已经依赖于一些 HTML5 技术,因此该解决方案不必与旧版浏览器兼容......但是“反馈循环”部分很重要,因为我之前一直在努力解决这个问题......
谢谢:)
【问题讨论】:
-
我在业余时间正在做一个。它还不能工作,但它会做你想做的所有事情(支持历史对象和 hashchange 作为后备)。如果你想关注或贡献:github.com/nathanmacinnes/Historic
-
在这样的问题上,我总是想知道,如果人们使用散列来传递真正应该添加到查询字符串中的数据。
-
@mblase75 他们当然是......这就是为什么它有点像黑客。在哈希中这样做的原因是您不希望用户每次执行某些操作时都必须重新加载页面。
-
哈希片段已被有效地重新用作一种客户端查询字符串,用于触发应用内的操作但不触发页面刷新/重新加载...
-
@NathanMacInnes: 啊,很酷 :) 如果它可以防止“反馈循环”并与 Backbone 一起很好地工作,那将是一个额外的好处。它与其他现有的库有什么不同?谢谢。
标签: javascript backbone.js history.js hashchange jquery-bbq