2012-12-20 4 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에서 클래스 함수를 호출 할 수 있습니까 ??? 당신의 initModule 방법은 this를 사용하는 경우 this가 이벤트를 트리거 요소로 설정되기 때문에, 그것이 작동하지 않습니다

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

참고 :

답변

5

는 먼저 인스턴스가 필요합니다. 이를 방지하려면 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

관련 문제