如何在 phonegap 移动应用程序中同步 android 中的离子导航栏和硬件按钮
How to sync ionic navigation bar and hardware button in android in a phonegap mobile app
在我的 phonegap
应用程序中,有一个带后退按钮的离子导航栏。如果我们使用这个导航栏导航应用程序,它将正确导航到每个页面,但如果我们在某个时间点使用硬件后退按钮,导航就会变得混乱。有没有解决这个问题的方法。
<ion-view view-title="Store Locator" ng-controller="storelistCtrl" >
<ion-nav-buttons side="right">
<button form="searchId" class="button button-icon icon ion-ios7-search" ng-click="search(searchForm.searchText)"></button>
</ion-nav-buttons>
<ion-content>
some code here....
</ion-content>
</ion-view>
这是我们应用程序中的一个页面。对于后退按钮,我用 ioPlatform.registerBackButtonAction
覆盖了操作
$ionicPlatform.registerBackButtonAction(function (event) {
if($state.current.name==="app.home"){
var myPopup = $ionicPopup.show({
title: 'Exit the application',
scope: $scope,
buttons: [
{ text: 'Cancel',
onTap: function(e) {
$state.go("app.home");
}
},
{
text: 'Yes',
type: 'button-positive',
onTap: function(e) {
navigator.app.exitApp();
}
}
]
});
}
else if($state.current.name==="app.couponlists"){
$state.go('app.home');
}
else if($state.current.name==="app.deallists"){
$state.go('app.home');
}
else if($state.current.name==="app.coupondetail"){
$state.go('app.couponlists');
}
else{
navigator.app.backHistory();
}
}, 100);
在实施之前先阅读文档。 Ionic Platform Doc
可用选项有
- onHardwareBackButton(回调)
- offHardwareBackButton(回调)
- registerBackButtonAction(回调,优先级,[actionId])
- 开(类型,回调)
确保首先调用您的 $ionicPlatform.ready() 。
你需要使用$ionicPLatform.registerBackButtonAction来实现,根据状态重定向,但是你需要确保先调用$ionicPlatform.ready(),见下面的代码
$ionicPlatform.registerBackButtonAction(function (event) {
if ($state.$current.name=="app.login" || $state.$current.name=="app.signup"){
// Do not go to the previous state (or view) for these states.
// Do nothing here to disable H/W back button.
$cordovaDialogs.alert('Going back is not allowed for this page', 'Notice', 'OK')
.then(function() {
// callback success
});
}
else if($state.$current.name=="app.productlist")
{
$location.path("/productlist");
} else {
// For all other states, the H/W BACK button is enabled
navigator.app.backHistory();
} }, 100);
在我的 phonegap
应用程序中,有一个带后退按钮的离子导航栏。如果我们使用这个导航栏导航应用程序,它将正确导航到每个页面,但如果我们在某个时间点使用硬件后退按钮,导航就会变得混乱。有没有解决这个问题的方法。
<ion-view view-title="Store Locator" ng-controller="storelistCtrl" >
<ion-nav-buttons side="right">
<button form="searchId" class="button button-icon icon ion-ios7-search" ng-click="search(searchForm.searchText)"></button>
</ion-nav-buttons>
<ion-content>
some code here....
</ion-content>
</ion-view>
这是我们应用程序中的一个页面。对于后退按钮,我用 ioPlatform.registerBackButtonAction
$ionicPlatform.registerBackButtonAction(function (event) {
if($state.current.name==="app.home"){
var myPopup = $ionicPopup.show({
title: 'Exit the application',
scope: $scope,
buttons: [
{ text: 'Cancel',
onTap: function(e) {
$state.go("app.home");
}
},
{
text: 'Yes',
type: 'button-positive',
onTap: function(e) {
navigator.app.exitApp();
}
}
]
});
}
else if($state.current.name==="app.couponlists"){
$state.go('app.home');
}
else if($state.current.name==="app.deallists"){
$state.go('app.home');
}
else if($state.current.name==="app.coupondetail"){
$state.go('app.couponlists');
}
else{
navigator.app.backHistory();
}
}, 100);
在实施之前先阅读文档。 Ionic Platform Doc
可用选项有
- onHardwareBackButton(回调)
- offHardwareBackButton(回调)
- registerBackButtonAction(回调,优先级,[actionId])
- 开(类型,回调)
确保首先调用您的 $ionicPlatform.ready() 。
你需要使用$ionicPLatform.registerBackButtonAction来实现,根据状态重定向,但是你需要确保先调用$ionicPlatform.ready(),见下面的代码
$ionicPlatform.registerBackButtonAction(function (event) {
if ($state.$current.name=="app.login" || $state.$current.name=="app.signup"){
// Do not go to the previous state (or view) for these states.
// Do nothing here to disable H/W back button.
$cordovaDialogs.alert('Going back is not allowed for this page', 'Notice', 'OK')
.then(function() {
// callback success
});
}
else if($state.$current.name=="app.productlist")
{
$location.path("/productlist");
} else {
// For all other states, the H/W BACK button is enabled
navigator.app.backHistory();
} }, 100);