Angular JS应用程序设备后退按钮必须具有确认对话框

时间:2016-02-11 09:20:35

标签: javascript jquery angularjs ionic-framework modal-dialog

我正在做一个有一些模块的AngularJS移动应用程序。我需要在我的应用程序中访问设备的后退按钮,Dialog必须有" OK"和"取消"。

  1. 当" OK"单击,它必须关闭应用程序。
  2. 当"取消"单击,它必须关闭对话框或返回false。
  3. 我尝试了很多方法,但我无法按预期得到结果。请有人建议我解决这个问题。我想尽可能地完成这项任务。请看Stack Overflow中的另一个问题。我已经给出了一些在这个问题中使用的编码。

    AngularJS device back button not working.?

4 个答案:

答案 0 :(得分:1)

我更喜欢使用$ionicPlatform.registerBackButtonAction并检查视图之间是否有导航历史记录(登录页面除外):

$ionicPlatform.registerBackButtonAction(function (e) {
    if ($ionicHistory.backView() && $ionicHistory.backView().stateName != "login") {
        // history back except login page
        $ionicHistory.goBack();
    } else {
        var confirmPopup = $myPopup.confirm({
                cssClass: 'center-txt-popup',
                title: '<b>Closing app</b>',
                template: "Do you want to exit?"
            });
        confirmPopup.then(function (close) {
            if (close) {
                navigator.app.exitApp();
            }
        });
    }
    e.preventDefault();
    return false;
}, 101); // 1 more priority than back button

答案 1 :(得分:0)

使用适合您情况的SweetAlert

但是你需要导入一个JS文件sweet-alert.min.js

SweetAlert.swal({
                title: "Are you sure?",
                text: "You want to go back!",
                type: "warning",
                showCancelButton: true,
                confirmButtonColor: "#DD6B55", confirmButtonText: "OK",
                cancelButtonText: "CANCEL",
                closeOnConfirm: true,
                closeOnCancel: true
            }, function (isConfirm) {
                if (isConfirm) {
//you logic goes here
}
});

希望这应该有所帮助!

答案 2 :(得分:0)

您可以使用离子硬件按钮如下:

$ionicPlatform.onHardwareBackButton(function(event) {
    event.preventDefault();
    event.stopPropagation();
    if (true) { // your check here
        $ionicPopup.confirm({
           title: 'System warning',
           template: 'are you sure you want to exit?'
        }).then(function(res) {
        if (res) {
            ionic.Platform.exitApp();
         }
        })
     }
}); 

答案 3 :(得分:0)

感谢支持人员,我已经通过我的伙伴的帮助完成了这个问题..请看下面的代码.. :)

app.run(['$rootScope','$location', function($rootScope,$location) {
  document.addEventListener("deviceready", function() {
    console.log("deviceready");
    document.addEventListener("backbutton", onBackKeyDown, false);
function onBackKeyDown(e) {
  e.preventDefault();
  if ($location.path() === "/login" || $location.path() === "/home") {
  var r=confirm("exit");
	if(r==true){
		console.log("not exit");
		navigator.app.exitApp();
	}else {
     navigator.app.goBack();
    }
}else {
    /* $ionicHistory.goBack(); */
	window.history.back();
    navigator.app.goBack();
}
}
}, 100);
$rootScope.$on('$routeChangeSuccess', function(event, current, previous) {
    $rootScope.title = current.$$route.title;
  });
}]);