我正在做一个有一些模块的AngularJS移动应用程序。我需要在我的应用程序中访问设备的后退按钮,Dialog必须有" OK"和"取消"。
我尝试了很多方法,但我无法按预期得到结果。请有人建议我解决这个问题。我想尽可能地完成这项任务。请看Stack Overflow中的另一个问题。我已经给出了一些在这个问题中使用的编码。
答案 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;
});
}]);