如何在 HYBRID 移动应用(iOS)中将 window.confirm 替换为 notification.confirm
Posted
技术标签:
【中文标题】如何在 HYBRID 移动应用(iOS)中将 window.confirm 替换为 notification.confirm【英文标题】:How to replace window.confirm with notification.confirm in HYBRID mobileApp(iOS) 【发布时间】:2015-01-20 18:41:51 【问题描述】:目前在我的 Web 应用程序中我正在做如下代码所示。 那么在到达 $window.Confirm 编译器之后会发生什么等待警报框上的响应,并取决于 Leave 是真还是假。 最后,这个方法将该布尔值返回给它的耦合方法。
//** 在网络应用程序中**//
function shouldLeave(next)
var message = 'Do you wish to leave this Page';
var leave = $window.confirm(message); // Return bool value as per user selection
if (leave)
//Doing my job...
reset();
return leave;
现在对于混合,我正在做的是:
function shouldLeave(next)
var message = 'Do you wish to leave this Page';
var leave = notification.confirm(message, callbackMethod(),title,[Ok, Cancel]); // Here there is no return value . Return depends on Callback as the callback method gets called depending on user selection
if (leave)
//Doing my job...
reset();
return leave;
function CallBack(index)
switch(index)
case 1 :
leave=true; break;
case 2 :
leave=false; break;
default:
leave=-1; break
return leave;
因此,在执行 Notification.confirm 编译器后,这里不会等待用户响应并移动到下一行。(但对于 Window。Confirm 正在这样做)。 所以现在我的疑问是如何重构这段代码,以便 mu 应该离开方法将正确的离开值返回给它的耦合方法。因为当我的 callback 方法在混合应用中的用户交互 shouldLeave 完成执行后执行。所以它的行为不像 $window.confirm 功能。
欢迎提出任何建议。
【问题讨论】:
【参考方案1】:检查一下
function shouldLeave()
var message = 'Do you wish to leave this Page';
navigator.notification.confirm(
message, // message
onConfirm, // callback to invoke with index of button
'Confirmation', // title
'Ok, Cancel' // buttonLabels
);
//on button press, the onConfirm function is called
function onConfirm(button)
//console.log('You selected button ' + button);
if(button == 1)
//pressed "Ok"
console.log("Ok ACTION");
else if(button == 2)
//pressed "Cancel"
console.log("Cancel ACTION");
这应该可行。
【讨论】:
感谢伊姆兰。我知道这种方法,但我的要求不同。听起来我需要重构我的代码。【参考方案2】:改变
notification.confirm(message, callbackMethod(), title, [Ok, Cancel]);
到
notification.confirm(message, callbackMethod, title, [Ok, Cancel]);
说明:
如果你输入callbackMethod()
,它会在执行到达该行时立即执行
如果你把callbackMethod
放在没有() 的地方,你就声明了要在回调上执行的函数。
【讨论】:
但是我的要求是编译器应该停止@notification.confirm,直到回调方法被执行。就像它发生在 window.confirm 方法的情况一样。但在这里我的编译器正在进入下一步。 那是不可能的,你想在回调执行时执行的代码,必须在那个回调里面以上是关于如何在 HYBRID 移动应用(iOS)中将 window.confirm 替换为 notification.confirm的主要内容,如果未能解决你的问题,请参考以下文章
如何在使用 canDisplayBannerAds 的 iOS7 应用程序中将 iAd 移动到屏幕顶部?