3

当我加载一个我正在调用的页面时addEventListenerdeviceReadyaddEventListener想在其中调用一个类中的函数。请参见以下示例:

示例类

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

我想initModuleaddEventListener.

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 回答