[英]JavaScript events propagation from Child objects
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對象進行。 也就是說,每種不同類型的Child對象都必須復制觀察者(pub-sub)模式的代碼,以注冊事件和觸發事件。 隨着父級開始創建多種類型的對象(Child1,Child2,Child3等),這將變得難以管理。
有沒有更好的方法來解決這個問題? 使用某種模式進行事件委托或冒泡。 現有的大多數文檔都談論DOM空間中的事件委托。 但是,如前所述,這與DOM不相關。
將DOM用作設計您描述的事件系統的參考,傳播和冒泡是可行的,因為所有元素都繼承了實現並參與該過程的公共基本類型。
每個事件從最高父級傳播到路徑上的所有后代,直至到達目標元素,並沿途傳遞上下文對象。 該對象用於將事件詳細信息傳遞給處理程序,並通知傳播系統它應停止傳播。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.