【发布时间】:2011-12-19 02:54:15
【问题描述】:
我正在构建一个在内部通过 URL 管理状态的 Web 应用程序,以允许用户使用浏览器按钮以及网站的 UI 来操作状态。
我正在使用jQuery-BBQ 来管理 URL 哈希,并且我在 hashchange 上有一个处理程序,当 URL 更改时会相应地更改内容(例如,按下浏览器后退/前进按钮)。然而,事情本身发生了相应的变化,我最终改变了哈希,从而触发了 hashchange 处理程序并导致了一个循环。
为了避开这些情况,我发现自己检查新状态是否与之前的状态相同,如果是则放弃。但我很快就得到了相当意大利面的代码,分别处理每个状态,并在每个状态上运行多个参与者。
是否有一种设计模式可以优雅地处理这种状态管理场景?
【问题讨论】:
-
也许我的问题并不清楚我不是在寻找使用 URL 哈希的替代方法;更一般地说,当更改可能来自多个输入(UI、浏览器状态/URL)并且可能影响程序的多个部分时,我试图找到一种管理状态的方法。
标签: javascript design-patterns url state