JavaScriptでモジュールパターンを使用しています。イベントを処理するcontroller.jsというファイルがあります。問題は、サブモジュールを使用したいということです。しかし、イベントはcontroller.jsで処理されるため、サブモジュールでイベントが発生した場合、どのように処理しますか?view.jsなどの別のファイルから
呼び出されたカスタムイベントをディスパッチします。PAGE_DISPLAYED
このイベントは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..
};
})();
上記のコードとイベント委任を拡張するにはどうすればよいですか?または、コードアーキテクチャが制限を課していますか。
私はjQueryMobileを使用しており、イベントのディスパッチは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});
});
})();
ありがとう。