backbone.js - 复杂主干应用程序中的事件管理

标签 backbone.js marionette backbone-events

我有复杂的主干应用程序,其中包含许多嵌套 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"
    
  • 对于不应依赖于特定应用程序对象的可重用模块,您可以使用自定义 EventBinderEventAggregator

有关更长的讨论,请参阅:

关于backbone.js - 复杂主干应用程序中的事件管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12538584/

相关文章:

javascript - 将多个属性更改绑定(bind)到 Backbone.js 模型的正确方法

javascript - 主干路由器创建多个 View ,导致多个事件绑定(bind)到同一个 View

javascript - 主干 View 中出现 'this' 问题

javascript - 当 subview 从 Backbone 中的服务获取 JSON 数据时,在父 View 中渲染 subview

javascript - Backbone JS - 获取属性

backbone.js - 不带 id 的 Backbone 模型获取(用于显示登录用户的详细信息)

javascript - Backbone Marionette 区域显示无渲染

java - 带有spring或java的骨架.Marionette.js完整教程

backbone.js - 主干 : add event listener only if doesn't already exist

javascript - 在主干 View 中绑定(bind)多个事件类型