【问题标题】:JavaScript events propagation from Child objects来自 Child 对象的 JavaScript 事件传播
【发布时间】:2015-12-02 06:53:55
【问题描述】:
var parent = (function() {
    // private vars .....
    // private methods....

    var childObj = new Child()

    return {
        public: publicmethods,
        on: on
    };
}());


function Child() {
    var events;
};

Child.prototype.on(ev, fn) {
}

不清楚如何以一种有效的方式从子对象中向上冒泡事件。考虑一个为更高级别的应用程序提供命名空间接口的库。应用程序可以注册所有事件。父对象如何从子对象(多个)捕获事件并将它们传播/冒泡到应用程序?

一个明显的方法是每个子对象都为父对象提供一个接口来注册事件,然后每当特定的子事件触发时,父对象必须将其冒泡。但我认为这不必要地涉及大量冗余代码,因为这需要为每个子对象完成。也就是说,每种不同类型的 Child 对象都必须复制观察者(pub-sub)模式的代码,以注册事件和触发事件。随着父级开始创建多种类型的对象(Child1、Child2、Child3 等),这将变得难以管理。

有没有更好的方法来管理这个?使用某种模式进行事件委托或冒泡。大多数现有文档都在讨论 DOM 空间中的事件委托。但是如前所述,这与 DOM 无关。

【问题讨论】:

    标签: javascript events


    【解决方案1】:

    将 DOM 作为设计您描述的事件系统的参考,传播和冒泡是有效的,因为所有元素都继承了一个实现并参与该过程的通用基本类型。

    每个事件从最顶层的父级沿路径通过所有后代传播,直到到达目标元素,并沿途传递一个上下文对象。该对象用于将事件详细信息传递给处理程序,并通知传播系统它应该停止传播。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-20
      • 2011-05-19
      相关资源
      最近更新 更多