Ionic 实现双击返回键退出功能
发布于 2年前 作者 zxj963577494 18246 次浏览 来自 分享

一、准备 Toast插件 插件地址:cordova plugin add https://github.com/EddyVerbruggen/Toast-PhoneGap-Plugin.git 二:代码

.run(function ($ionicPlatform, $rootScope, $location, $timeout, $ionicHistory, $cordovaToast) {
        $ionicPlatform.ready(function ($rootScope) {
            // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
            // for form inputs)
            if (window.cordova && window.cordova.plugins.Keyboard) {
                cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
            }
            if (window.StatusBar) {
                // org.apache.cordova.statusbar required
                StatusBar.styleDefault();
            }
        });
        //双击退出
        $ionicPlatform.registerBackButtonAction(function (e) {
            //判断处于哪个页面时双击退出
            if ($location.path() == '/tab/news') {
                if ($rootScope.backButtonPressedOnceToExit) {
                    ionic.Platform.exitApp();
                } else {
                    $rootScope.backButtonPressedOnceToExit = true;
                    $cordovaToast.showShortTop('再按一次退出系统');
                    setTimeout(function () {
                        $rootScope.backButtonPressedOnceToExit = false;
                    }, 2000);
                }
            }
            else if ($ionicHistory.backView()) {
                $ionicHistory.goBack();
            } else {
                $rootScope.backButtonPressedOnceToExit = true;
                $cordovaToast.showShortTop('再按一次退出系统');
                setTimeout(function () {
                    $rootScope.backButtonPressedOnceToExit = false;
                }, 2000);
            }
            e.preventDefault();
            return false;
        }, 101);
    })
13 回复

@DongHongfei 帮我解决下极光推送的问题吧,尽量用最新版在机器上测一遍,先谢了

赞一个,可以帮我解决问题,但是我觉得是不是用$state.include来判断处于哪个页面是不是更好些啊?

@erguotou520 可以,提供一个思路,具体结合自己业务做

@zxj963577494 嗯,已解决,谢谢,我确实用的是$state.include,因为实用性更广

如果在此基础上添加一个功能,就是当$ionicLoading显示的时候按返回键取消loading但不做其它事,并且不破坏原来的功能应该怎么写?我看了下loading的优先级为500呢

@erguotou520 第二个参数101是优先级,你调整下试试,没遇到过这样的需求

@zxj963577494 嗯,我知道是优先级,我自己改成了201为了能够控制模态框,主要是loading没有提供判断是否显示的方法,所以不知道怎么实现需求

@erguotou520 按返回键肯定是调用hide()方法,不需要判断是否显示的方法吧?你说的我没理解错吧。

这个很赞,我学习了这个方法。只是不知道是不是我用的有问题还是怎样,这个 $ionicHistory.goBack();并没有实现,我就该用其他的方法了

只需要这两部就解决了吗?为什么我的报错了?

报了这个错, Uncaught Error: [$injector:unpr] Unknown provider: $cordovaToastProvider <- $cordovaToast,请问需要ngCordova支持吗?那个太大了

回到顶部