Backbone.js:查看状态和路由

时间:2012-10-30 07:05:29

标签: javascript backbone.js views url-routing

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

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

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

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

感谢您指点我精益求精的解决方案。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

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

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