我在JavaScript中使用模塊模式。我有一個文件說controller.js處理事件。問題是我想使用子模塊。但由於事件在controller.js中處理,我將如何處理子模塊中的事件(如果有)?
我從另一個文件派發一個名爲PAGE_DISPLAYED
的自定義事件,聲明爲view.js.這個事件由controller.js監聽,根據顯示的頁面,它執行其他事情,比如綁定特定於特定頁面的附加事件處理程序。如何使用子模塊執行此操作。如何使用模塊模式在JavaScript中擴展事件委託?
示例代碼:
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});
});
})();
感謝。
你怎麼做派遣的事件? – NicoSantangelo 2012-07-31 13:09:47
Nicosunshine:更新了問題以包含派送事件代碼。 – boring 2012-08-01 03:37:11
好吧,我想你可以繞過它,如果你可以傳遞一個函數的觸發器,這將知道如何處理事件(最好以polimorfic的方式)。如果你想我可以發佈一些代碼:)(對不起,延遲) – NicoSantangelo 2012-08-02 03:16:07