用navigator.notification.confirm传递两个参数?

时间:2012-12-04 23:49:11

标签: javascript cordova cordova-2.0.0

我正在尝试使用Phonegap通知在我的Phonegap应用中显示错误消息,然后允许用户通过电子邮件发送错误。唯一的问题是我无法将错误消息传递给回调函数,导致电子邮件无效。

我现在的代码如下:

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

}

displayError("Test")调用哪个,这将使错误内容Test。我想将errormsg传递给onConfirm,但我不知道该怎么做,或者是否可能。

我正在考虑的一个可能的解决方案是:

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

}

但如果显示新错误,则不会更改errormsg。我确认了这一点,因为在模拟器设置中,我的应用程序抛出了两个错误。第一个在使用该方法时工作正常,传递test,但接下来的第二个错误使用原始变量,而不是最近的变量。

1 个答案:

答案 0 :(得分:36)

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

}

将它包装在匿名函数中怎么样?这样,您可以根据需要传递任意数量的参数,同时保持范围。