2012-12-04 7 views
9

私はPhonegap通知を使用してPhoneGapアプリにエラーメッセージを表示しようとしていますが、ユーザーがエラーを電子メールで送信できるようにしています。唯一の問題は、エラーメッセージをコールバック関数に渡すことができず、電子メールが役に立たなくなることです。エラー内容TestになるだろうdisplayError("Test")によって呼び出されnavigator.notification.confirmで2つの引数を渡しますか?

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

} 

、:

私が今持っているコードは次のようになります。 errormsgonConfirmに渡したいと思いますが、どうすればよいか、それが可能かどうかわかりません。

私が考えていた可能性のある解決策は、このでした:

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

} 

しかし、新しいエラーが表示された場合には、errormsgを変更しません。私はシミュレータの設定で、私のアプリは2つのエラーをスローするため、これを確認しました。最初のメソッドは、そのメソッドを使用して、testを渡しても正常に動作しますが、直後に続く2番目のエラーは、最新のものではなく元の変数を使用します。

答えて

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

関連する問題