2012-12-20 37 views
3

當我加載一個頁面時,我打電話給「addEventListener」來初始化「deviceReady」,在那個addEventListener裏我想調用一個類內的函數。例子。如何在document.addEventListener()中調用類函數

實施例類

var HomePageModel = function(){ 

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

我想調用上述initModule功能的addEventListener

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

是否有可能在類的外部的eventlistener內調用類函數???

回答

5

你需要一個實例第一:

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); 
+0

這會失去這個。 – SLaks

+1

@SLaks在功能裏面,是的。但我不確定是否需要。 – bfavaretto