2013-05-30 2 views
1

В настоящее время я работаю над мобильным приложением, используя jQuery Mobile и PhoneGap 2.0.0. Приложение представляет собой html-файл с различными элементами div, который представляет экраны приложения, а собственный контейнер используется для отображения экранов с использованием кода 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 и подтвердить. Однако эти функции являются асинхронными и выполнение сценария продолжается.

Я пытался использовать метод обратного вызова возвращает правильное логическое, но функцию с помощью подтверждения выпрыгивающее Уже вступил закончил выполнение

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;} 
} 

В этом примере кода Всплывающие загорается на короткое время, прежде чем исчезнуть, когда приложение закрывается после завершения функции toClose().

Я попытался использовать функцию обратного вызова, чтобы установить глобальную переменную, которая будет использоваться для возврата результата всплывающего окна, но это не сработало.

Есть ли способ получить результат навигации.notification.confirm?

+0

Что находится в 'кнопке', когда он приходит в' onConfirmClose'? Кнопка –

+0

- это указатель кнопки, нажатой на уведомлении.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, которая не используется). Таким образом, функция закрытия продолжает выполнение и заканчивается, прежде чем я смогу получить результат действия подтверждения. Поскольку каждая функция вызывается после определенного события, я попытаюсь каким-то образом изменить приложение в качестве обходного пути. – Khalid

+0

@ Khalid, пожалуйста, напишите весь соответствующий код, чтобы мы могли знать, что именно вопрос –

Смежные вопросы