3

我正在考虑构建我的 Backbone 应用程序的最佳方式。问题是我有各种复杂的状态,每一个都是由一些视图显示而其他所有的都是隐藏的。

在 Backbone 中处理此问题的规范方法是什么?我想到的两件事是通过路由器控制状态(调用视图隐藏/显示方法)或让视图监听路由事件。

第一种方法的问题是路由器必须知道应用程序中存在的所有视图。

第二个解决方案的问题是我必须让所有视图监听所有事件并隐藏其中任何一个,但有几个让它们显示。

感谢您向我指出一个精益解决方案。

4

2 回答 2

2

我使用 FSM 机器来更改应用程序的状态。每个状态显示和隐藏相应的视图。我的视图使用过渡来动画进出,因此更改状态更复杂,然后是简单的显示/隐藏 - 它从一种状态进出动画到另一种状态。我已经分叉了https://github.com/fschaefer/Stately.js以满足我的需求。

于 2012-10-30T11:03:36.917 回答
1

我可以分享我个人遇到这样一个问题的经验。我不知道这是否是最好的解决方案,但它对我有用。

我的问题更糟,因为我有几个路由器,每个路由器都应该隐藏/显示属于它的视图。我选择的解决方案与您考虑的第一个选项相似。

在我的路由器中有一个包含所有现有视图的数组。当状态改变和路由回调执行时,所有其他视图都被这个简单的代码隐藏,view[i].hide()并显示正确的视图。如果您想拥有更多控制权,可以制作 View 模型和 Views 集合。

我认为这是一个更好的解决方案,因为当您添加新路由时,您不必将路由事件添加到所有视图。此外,您的视图与路由器保持分离,他们甚至可能不知道它的存在。

于 2012-10-30T09:05:04.647 回答