木偶父母和孩子的意见

时间:2014-03-27 08:30:54

标签: backbone.js marionette

目前我有一个应用程序,我在其中创建了一个包含两个区域的布局。在两个区域中,一个是标题,另一个是内容区域,由网格数据填充。

我有3个项目视图来替换我的内容区域。现在我想知道如何存储在第一个项目视图中选择的行的值并将其显示在第三个视图中。我尝试的是我在布局中创建了一个模型对象,并在所有视图中使用该模型进行设置和获取,就像它是一个共享对象一样,任何视图都可以使用layout.model.set()或layout.model.get进行访问( )。

在布局中创建模型似乎不是一个好方法。共享数据的另一种方式是什么?如果我使用单个视图特定的模型对象,则在使用new运算符创建模型时,另一个视图无法访问一个视图中的数据集。

1 个答案:

答案 0 :(得分:2)

我是发布 - 订阅模式的忠实粉丝,而Marionette通过其Event Aggregator实现了这一点。第一个视图会发送一个事件,让我们说" viewname:selectedrows"它会传递与事件一起选择的特定模型。它不需要知道谁订阅了该事件,它不应该关心。它只是暴露了一个有趣的事件。然后,第二个视图可以在其事件处理程序中访问该数据。

我喜欢基于事件的架构的原因是视图保持松散耦合。该视图完全是独立的,而不是对共享对象的硬编码引用。您可以将其移动到应用程序的任何其他部分,它仍然可以工作。