我刚开始使用Backbone。我经历了前两个PeepCode截屏视频,这非常棒,现在我正在研究一个未来应用程序的快速分离(无服务器端)模型。

这是我想要构建的(大致)。一系列五个文本框-称为这些小部件。选择每个小部件输入后,将显示一个窗格,该窗格显示与小部件关联的任务,并允许用户创建新任务或销毁现有任务。

在这一点上,我认为我有以下模型:

Widget
Task


以下集合:

Tasks
Widgets


以下视图(这就是毛茸茸的地方!)

WidgetListView
  - Presents a collection of Widgets
WidgetView
  - sub-view of WidgetListView to render a specific Widget
TaskPaneView
  - Presented when the user selects a Widget input
TaskCreateView
  - Ability to create a new Task associated with selected Widget
TaskListView
  - Presents a collection of Tasks for the given widget
TaskView
  - Displays Task detail - sub-view of TaskListView


假设这是合理的,那么技巧就变成了当选择WidgetView时如何显示TaskPaneView。此外,TaskPaneView应该如何依次呈现TaskCreateViews和TaskListViews。

真正的问题是:一个级联是否会跨视图呈现事件?根视图是否可以知道子视图并将其显式呈现?这应该是事件驱动的吗?

很抱歉,如果这是一个开放性问题,只是希望有人以前见过类似的东西,并能够指出正确的方向。

谢谢!

最佳答案

绝对使它成为事件驱动的。另外,请尽量不要创建紧密耦合的视图。松散的耦合将使您的代码更具可维护性和灵活性。

查看有关事件聚合器模型和主干的这篇文章:

http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/

简短的版本是您可以执行以下操作:

var vent = _.extend({}, Backbone.Events);


并使用vent.trigger和vent.bind来控制您的应用。

09-25 16:44