3

ページをロードするときにaddEventListenerinitializeを呼び出していますがdeviceReady、そのaddEventListener中でクラス内にある関数を呼び出したいと考えています。次の例を参照してください。

クラス例

var HomePageModel = function(){
    
    this.initModule = function(){
    //doing some process;
    };
};

initModuleで上記の関数を呼び出したいaddEventListener

お気に入り

document.addEventListener("deviceready", HomePageModel.initModule, false);

eventlistener クラスの外にあるクラス内でクラス関数を呼び出すことは可能ですか?

4

1 に答える 1

6

最初にインスタンスが必要です:

document.addEventListener("deviceready", new HomePageModel().initModule, false);

initModuleメソッドが を使用している場合、がイベントをトリガーした要素に設定されるthisため、機能しないことに注意してください。thisそれを避けるために、 の固定値にバインドされた新しい関数を作成できますthis

var model = new HomePageModel();
var boundFn = model.initModule.bind(model);
document.addEventListener("deviceready", boundFn, false);

最後に、いつでもラッパー関数をイベント ハンドラーとして使用し、そこからモジュール初期化子を呼び出すことができます (なぜそれを考慮しなかったのかわかりません)。

document.addEventListener("deviceready", function(){
    new HomePageModel().initModule();
}, false);
于 2012-12-20T14:31:47.347 に答える