2013-05-30 77 views
1

我目前正在使用jQuery Mobile和PhoneGap 2.0.0的移動應用程序。 該應用程序是一個帶有不同div元素的html文件,代表應用程序的屏幕,並使用本機容器顯示使用JavaScript代碼的屏幕。PhoneGap確認回調函數

對於多種操作,我一直在使用本地警報和確認功能與用戶交互。 例如:

function customBeforeMenuItemClick(screen, menuItem) { 

if (screen === "APPROVALQUEUE" && menuItem === "Close") { 
    return (confirm('Do you want to close without submitting changes?')); 
} 
} 

在這裏,函數採用從確認彈出的返回,並在其他函數使用它(在其上我沒有控制)來處理關閉的動作或不應用程序。

現在我需要修改彈出窗口的標題,並想到使用Phonegap函數navigator.notification.alert並確認。但是,這些函數是異步的,並且腳本的執行繼續。

我曾嘗試使用回調方法返回正確的布爾但使用確認彈出的功能alreday執行完畢

function onConfirmClose(button){ 
return (button == 1); 
} 

function toClose(){ 
navigator.notification.confirm("Close?", onConfirmClose, 
'Do you want to close', 'yes,no'); 
} 

function customBeforeMenuItemClick(screen, menuItem) { 

if (screen === "Start" && menuItem === "Cancel") { 
    toClose(); 
} 
else {return true;} 
} 

在此示例代碼,彈出短暫閃爍時,應用程序是在消失之前在函數關閉()完成後關閉。

我曾嘗試使用回調函數來設置一個全局變量,該變量將用於返回彈出式窗口的結果,但它不起作用。

有沒有辦法得到navigation.notification.confirm的結果?

+0

當'onConfirmClose'出現時''button'裏有什麼? –

+0

按鈕是在notification.confirm上按下的按鈕的索引(即1代表「是」,2代表「否」)。 以下是來自科爾多瓦網站的文檔http://cordova.apache.org/docs/en/2.0.0/cordova_notification_notification.md.html – Khalid

+0

是的我知道,但*在你的代碼*中,它是否到達那裏?它有什麼?那麼證明什麼不起作用總是比較容易 –

回答

0

您可以關閉該應用程序是這樣的:

// you may alert the callback button to make sure which button sends which index 
var YES_BUTTON = 1; // assuming that the 'YES' button will send the index 1 

function onConfirmClose(button){ 
    // alert(button); ? 
    if (button == YES_BUTTON) { 
     navigator.app.exitApp(); // close the app 
    } 
} 

如果還是失敗,你可以看看在API Documentation然後從你的測試的例子開始。

+0

我已經嘗試了這種方法,但事情是,確認的調用是在關閉應用程序的功能內(這是Sybase unwired平臺如何實現它)。因此,在我能夠得到確認操作的結果之前,關閉功能會繼續執行並結束。 由於每個函數都是在特定事件之後調用的,因此我會嘗試修改某種方式將我的應用程序作爲解決方法。 – Khalid

+0

@哈立德請發佈所有相關的代碼,以便我們可以知道問題究竟是什麼 –