2017-04-19 3 views
0

아무도 다음 코드 app.receivedEvent('deviceready')이 사용 된 이유는 말해 줄 수 있습니까? this.receivedEvent('deviceready')이 아닌가요? this 이벤트 객체가 될 곳phonegap index.js 파일 왜 app.receivedEvent가 아닌 this.receivedEvent

// The scope of 'this' is the event. In order to call the 'receivedEvent' 
// function, we must explicitly call 'app.receivedEvent(...);' 

기본적으로, 이벤트 핸들러가 this (자체 문맥에 이벤트 콜백을 호출합니다 :

var app = { 
    // Application Constructor 
    initialize: function() { 
     this.bindEvents(); 
    }, 
    // Bind Event Listeners 
    // 
    // Bind any events that are required on startup. Common events are: 
    // 'load', 'deviceready', 'offline', and 'online'. 
    bindEvents: function() { 
     document.addEventListener('deviceready', this.onDeviceReady, false); 
    }, 
    // deviceready Event Handler 
    // 
    // The scope of 'this' is the event. In order to call the 'receivedEvent' 
    // function, we must explicitly call 'app.receivedEvent(...);' 
    onDeviceReady: function() { 
     app.receivedEvent('deviceready'); 
    }, 
    // Update DOM on a Received Event 
    receivedEvent: function(id) { 
     var parentElement = document.getElementById(id); 
     var listeningElement = parentElement.querySelector('.listening'); 
     var receivedElement = parentElement.querySelector('.received'); 

     listeningElement.setAttribute('style', 'display:none;'); 
     receivedElement.setAttribute('style', 'display:block;'); 

     console.log('Received Event: ' + id); 
    } 
}; 

답변

1

주석은 실제로 appthis 이상 사용하는 이유를 설명).

receivedEvent 메서드는 응용 프로그램에 정의되어 있으며 this (이벤트 콜백 함수 내부의 이벤트 객체로 설정)이 아닙니다. 이 경우 receivedEventil을 호출하려면 객체를 포함하는 객체의 메서드로 호출하십시오. app :

app.receivedEvent(...);