Javascript 在复合模式中,哪个对象应该负责viewtransitions?

Javascript 在复合模式中,哪个对象应该负责viewtransitions?,javascript,design-patterns,backbone.js,composite,Javascript,Design Patterns,Backbone.js,Composite,现在您已经看到了我的很棒的uml图,我可以继续真正的东西了 假设左侧边栏中的一个叶子接收到一个操作,这个操作想要更改范围之外的内容,谁负责更改mainview containercomposite,一个独立的viewmanager,sidebarcomposite 这可能是一种模糊和/或主观的说法,但我想知道当它涉及到更深层次的嵌套时,最普遍的方法是什么。没有一个真正的答案: 一种解决方案是扩展主干网提供的事件模型,以创建应用程序级事件聚合器(关于此技术的一篇很棒的博客文章),并将事件从复合视图

现在您已经看到了我的很棒的uml图,我可以继续真正的东西了

假设左侧边栏中的一个叶子接收到一个操作,这个操作想要更改范围之外的内容,谁负责更改mainview

containercomposite,一个独立的viewmanager,sidebarcomposite


这可能是一种模糊和/或主观的说法,但我想知道当它涉及到更深层次的嵌套时,最普遍的方法是什么。

没有一个真正的答案:

一种解决方案是扩展主干网提供的事件模型,以创建应用程序级事件聚合器(关于此技术的一篇很棒的博客文章),并将事件从复合视图传送到事件聚合器,然后让MainView侦听事件聚合器以获取合适的事件,并相应地更改自身

另一种解决方案是将compview的元素绑定到合适的模型和集合,让compview的操作修改这些集合和元素,然后通过侦听这些模型和集合发出的事件将MainView绑定到这些模型和集合。与上面的解决方案有点类似

另一种解决方案是使用某种控制器对象,该对象具有修改MainView的方法,并在需要更改MainView时让compview调用控制器的方法


我认为有许多其他方法可以实现不同视图和元素之间的通信,但这三种方法都很好,至少在某种程度上可以在代码中保持适当的分离。当然,您可以混合使用这些方法,比如在应用程序级通信中使用事件聚合,但在单模块级使用控制器,但这只是一个想法

您可能想查看knockout.composite-

它使用一个pubsub模式,可以用来分离这种逻辑。MainView可以订阅特定消息并执行转换。消息可以直接来自CompView,也可以来自中间“控制器”