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

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

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

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

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

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

【问题讨论】:

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

标签: javascript backbone.js views url-routing


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-18
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      • 2013-02-17
      • 2012-12-04
      相关资源
      最近更新 更多