2012-12-04 5 views
9

Phonegap 알림을 사용하여 PhoneGap 앱에 오류 메시지를 표시하고 사용자가 오류를 이메일로 보내도록 허용하려고합니다. 유일한 문제는 오류 메시지를 콜백 함수에 전달할 수 없어 전자 메일이 쓸모 없게됩니다.navigator.notification.confirm을 사용하여 두 개의 인수를 전달 하시겠습니까?

내가 지금 가지고있는 코드는 다음과 같습니다

displayError("Test")에 의해 불려
function displayError(errormsg) { 
    navigator.notification.confirm(
            errormsg, 
            onConfirm, 
            'Error', 
            'Submit, Cancel' 
            ); 
} 
function onConfirm(buttonIndex){ 
    if (buttonIndex === 1){ 
     alert(errormsg); 
    } 

} 

, 에러 내용 Test을 할 것이다. errormsgonConfirm에 전달하고 싶습니다. 그러나이 작업을 수행하는 방법이나 가능한 경우이를 알지 못합니다.

function displayError(errormsg) { 
    test = errormsg 
    navigator.notification.confirm(
            errormsg, 
            onConfirm, 
            'Error', 
            'Submit, Cancel' 
            ); 
} 
function onConfirm(buttonIndex){ 
    if (buttonIndex === 1){ 
     alert(test); 
    } 

} 

그러나 새로운 오류가 표시되는 경우 즉, errormsg을 변경하지 않습니다 : 내가 고려하고

가능한 솔루션이 있었다. 시뮬레이터 설정에서 내 애플 리케이션이 두 가지 오류를 던지기 때문에 이것을 확인했다. 첫 번째 방법은 test을 전달하면서 해당 메서드를 사용할 때 잘 작동하지만 바로 다음에 나오는 두 번째 오류는 가장 최근 코드 대신 원래 변수를 사용합니다.

답변

34
function displayError(errormsg) { 
    navigator.notification.confirm(
     errormsg, 
     function(buttonIndex){ 
      onConfirm(buttonIndex, errormsg); 
     }, 
     'Error', 
     'Submit, Cancel' 
     ); 
} 
function onConfirm(buttonIndex, errormsg){ 
    if (buttonIndex === 1){ 
     alert(errormsg); 
    } 

} 

익명 함수로 묶으면 어떨까요? 그렇게하면 범위를 유지하면서 원하는만큼의 매개 변수를 전달할 수 있습니다.

+0

완벽하게 작동합니다. 나는 이것도 생각조차하지 않았다. – Charlie

+0

범위를 유지하고'this '대신'var self = this'를 사용해야 할 때 도움이된다. 아이디어에 감사드립니다! – escapedcat

+0

왜 22 명의 사용자가이 회신을 upvoted했지만 질문을 upvote하지 않았다. 이 사이트의 등급 시스템은 원하는만큼 많이 남겨 둡니다 ... – andreszs

관련 문제