如何在 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的主要内容,如果未能解决你的问题,请参考以下文章

为啥国内突然冒出很多Hybrid混合移动应用开发框架

如何在IOS上调试Hybrid应用

如何在使用 canDisplayBannerAds 的 iOS7 应用程序中将 iAd 移动到屏幕顶部?

即时通讯开发之在WebSocket基础上实现Hybrid移动端消息推送

如何在 Xamarin(iOS) 中将按钮从右向左移动

如何在 Hybrid iOS 应用程序中实现 WebRTC?