我有具有许多嵌套视图(木偶布局和区域)的复杂主干应用程序,并且我已经使用木偶事件管理器在这些视图之间进行协调。但是在编写代码的一半时,我意识到我正在创建太多事件并且更复杂的是,我很少有事件触发多个动作。
其他复杂的主干应用程序如何管理事件。在处理事件时要记住的任何准则、最佳实践等,然后再将自己挖入更大的漏洞。
谢谢
我有具有许多嵌套视图(木偶布局和区域)的复杂主干应用程序,并且我已经使用木偶事件管理器在这些视图之间进行协调。但是在编写代码的一半时,我意识到我正在创建太多事件并且更复杂的是,我很少有事件触发多个动作。
其他复杂的主干应用程序如何管理事件。在处理事件时要记住的任何准则、最佳实践等,然后再将自己挖入更大的漏洞。
谢谢
我不确定您使用的是哪个事件框架,因此无需任何假设,请确保您使用的是 Marionette 的EventBinder,它可在所有 Marionette 视图中直接使用,以及可选的EventAggregator用于跨越太多边界的应用程序级事件并用于解耦模块。
我不是该主题的专家,因此以下内容无论如何都不是权威:
EventBinder
如下:在父视图中:
this.bindTo(subview, 'myscope:myevent', this.myevetHandler);
在子视图中:
this.trigger('myscope:myevent');
对于跨模块或跨视图事件传播,基本上是应用程序范围的事件,请使用应用程序的 EventAggregator
:
MyApp = new Backbone.Marionette.Application();
MyApp.vent.on("foo", function(){
alert("bar");
});
MyApp.vent.trigger("foo"); // => alert box "bar"
对于不应依赖于特定应用程序对象的可重用模块,您可以使用自定义EventBinder
或EventAggregator
.
有关更长的讨论,请参阅: