我刚开始使用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来控制您的应用。