我在 JavaScript 中使用模块模式。我有一个文件说 controller.js 处理事件。问题是我想使用子模块。但是由于事件是在 controller.js 中处理的,如果出现任何事件,我将如何处理子模块中的事件?
我调度了一个PAGE_DISPLAYED
从另一个文件中调用的自定义事件,比如 view.js。此事件由 controller.js 侦听,并根据显示的页面执行其他操作,例如绑定特定于该特定页面的附加事件处理程序。如何使用子模块做到这一点。
示例代码:
window.KDJ || (window.KDJ = {}); //namespace
KDJ.controller = (function () {
$(document).off('PAGE_DISPLAYED');
$(document).on('PAGE_DISPLAYED', function (e, data) {
switch(data.pageId) {
case "page1":
// do something..
break;
case "page2":
// do something..
break;
}
});
return {
// exported methods and props..
};
})();
如何扩展上述代码和事件委托?或者代码架构是否存在任何限制。
我正在使用 jQuery Mobile 并PAGE_DISPLAYED
通过监听事件来调度pagechange
事件:
window.KDJ || (window.KDJ = {}); //namespace
KDJ.view = (function () {
// ...
$(document).off('pagechange');
$(document).on('pagechange', function (e, ui) {
//...
$(document).trigger(PAGE_DISPLAYED, {'pageId': loadedPageId, 'key': key});
});
})();
谢谢。