Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干设计-多视图、同一模型、事件分离_Javascript_Design Patterns_Backbone.js - Fatal编程技术网

Javascript 主干设计-多视图、同一模型、事件分离

Javascript 主干设计-多视图、同一模型、事件分离,javascript,design-patterns,backbone.js,Javascript,Design Patterns,Backbone.js,我对JS和Backbone很有经验,但需要您的帮助,以头脑风暴的方式解决以下问题: 有两种观点。它们并排坐在一起,同时在页面中运行。 这两个视图都传递给同一个模型实例。 这两个视图都有可以更新模型的操作 如何使用主干网的事件驱动编程,您认为这是区分不同视图触发的事件的最佳方法 一种可能的情况可能是: 用户在视图A上执行的操作以无效方式更新了模型。但由于用户没有在视图B上执行该操作,因此不应在视图B上通知他们。您可以使用中间对象来管理存储库、与数据库连接的对象和视图的实例化/操作之间的流。 您可以

我对JS和Backbone很有经验,但需要您的帮助,以头脑风暴的方式解决以下问题:

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

如何使用主干网的事件驱动编程,您认为这是区分不同视图触发的事件的最佳方法

一种可能的情况可能是:
用户在视图A上执行的操作以无效方式更新了模型。但由于用户没有在视图B上执行该操作,因此不应在视图B上通知他们。

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

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


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

是否收到有关提供答案的任何反馈?