我有复杂的主干应用程序,其中包含许多嵌套 View ( Marionette 布局和区域),并且我已经使用 Marionette 事件管理器在这些 View 之间进行协调。但在编码进行到一半时,我意识到我正在创建太多事件,并且使情况变得更加复杂的是,我很少有事件触发多个操作。
其他复杂的主干应用程序如何管理事件。在处理事件时要记住的任何指南、最佳实践等,然后再让自己陷入更大的困境。
谢谢
最佳答案
我不确定您正在使用哪个事件框架,因此在没有任何假设的情况下,请确保您使用的是 Marionette 的 EventBinder可以直接在所有 Marionette View 中使用,也可以选择 EventAggregator对于跨越太多边界的应用级事件以及解耦模块。
我不是该主题的专家,因此以下内容不具有任何权威性:
- 如果父 View 需要触发同一模块中 subview 的 Action ,则直接使用方法调用而不是事件机制。
- 如果 subview 需要触发父 View 中的操作,则使用
EventBinder
,如下所示:
在父 View 中:
this.bindTo(subview, 'myscope:myevent', this.myevetHandler);
在 subview 中:
this.trigger('myscope:myevent');
对于跨模块或跨 View 事件传播,基本上是应用程序范围的事件,请使用 application's
事件聚合器
:MyApp = new Backbone.Marionette.Application(); MyApp.vent.on("foo", function(){ alert("bar"); }); MyApp.vent.trigger("foo"); // => alert box "bar"
对于不应依赖于特定应用程序对象的可重用模块,您可以使用自定义
EventBinder
或EventAggregator
。
有关更长的讨论,请参阅:
关于backbone.js - 复杂主干应用程序中的事件管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12538584/