Backbone.js:查看状态和路由

Posted

技术标签:

【中文标题】Backbone.js:查看状态和路由【英文标题】:Backbone.js: view states and routes 【发布时间】:2012-10-30 07:05:28 【问题描述】:

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

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

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

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

感谢您为我提供精益解决方案。

【问题讨论】:

一个错误模型,状态视图订阅。通过该模型调用错误事件(这样所有组件都知道公共总线模型) 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

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

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

【讨论】:

以上是关于Backbone.js:查看状态和路由的主要内容,如果未能解决你的问题,请参考以下文章

Backbone.js 路由而不更改 url

如何使用backbone.js 路由器切换视图?

Backbone.js:未达到路由器回调

Backbone.js URL 路由

Backbone.js PushState 路由 .htaccess 仅作为散列工作,但无处可去

使用 Jasmine 监视 Backbone.js 路由调用