骨干设计 - 多视图,相同模型,事件分离

时间:2015-02-11 12:03:06

标签: javascript design-patterns backbone.js

我对JS和Backbone非常有经验,但希望您的帮助能够针对以下问题集思广益:

有两种观点。他们并排在页面中并排运行。 这两个视图都传递给模型的同一个实例。 这两个视图都有可以更新模型的操作。

如何使用Backbone的事件驱动编程,您认为这是区分从视图到视图的事件的最佳方式。

可能的情况可能是: 用户执行在View A上以无效方式更新模型的操作。但由于用户未在View B上执行,因此不应在此处通知他们。

2 个答案:

答案 0 :(得分:0)

您可以使用中间对象来管理存储库(发生数据库连接的对象)与视图的实例化/操作之间的流程。
在使用修改后的模型或集合重新渲染视图之前,您可以让中间对象(通用控制器)进行验证(如果需要进行操作),而不是将模型绑定到视图中的视图。 通过使用事件聚合器,您可以从视图中的视图触发事件,并从"控制器内听取事件。对象,谁将依次执行所需的自定义操作。

答案 1 :(得分:0)

使用自定义事件似乎很简单。只需将每个视图的操作视为不同,并为每个视图命名不同的事件(例如this.trigger('view1:event1'),this.trigger('view2:event2'))。

确保视图订阅了这些特定的自定义事件,以避免在两个视图上触发事件的操作发生冲突(如属性更新)。