Javascript Backbone.js:查看状态和路由

Javascript Backbone.js:查看状态和路由,javascript,backbone.js,views,url-routing,Javascript,Backbone.js,Views,Url Routing,我正在考虑构造主干应用程序的最佳方法。问题是我有各种复杂的状态,每个状态都是由一些视图显示的,而所有其他视图都是隐藏的 在主干网中处理此问题的标准方法是什么?我认为有两件事要么通过路由器控制状态(调用视图隐藏/显示方法),要么让视图监听路由事件 第一种方法的问题是路由器必须知道应用程序中存在的所有视图 第二种解决方案的问题是,我必须让所有的视图都听所有的事件,并隐藏其中的任何一个,但让它们显示出来的几个除外 谢谢你给我指点了一个精益解决方案。我可以分享我个人对这个问题的经验。我不知道这是否是最好

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

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

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

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


谢谢你给我指点了一个精益解决方案。

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

我的问题更糟,因为我有几个路由器,每个路由器都应该隐藏/显示属于它的视图。我选择的解决方案类似于您考虑的第一个选项。 在我的路由器中有一个数组,它保存所有现有的视图。当状态更改并执行route callback时,所有其他视图都将使用以下简单代码隐藏
view[i].hide()
,并显示正确的视图。如果希望获得更多控制权,可以创建视图模型和视图集合


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

我使用FSM机器更改应用程序的状态。每个状态都显示和隐藏相应的视图。“我的视图”使用“变换”来设置进出动画,因此更改状态更为复杂,而“显示/隐藏”则更为简单-它将进出动画从一种状态设置为另一种状态。我已经为满足我的需要而分叉。

状态视图订阅了一个错误模型。通过该模型调用错误事件(这样所有组件都知道一个公共总线模型)