次のコントローラーを使用して、dashboard
ページ内のアンドロイドの戻るボタンでアプリを終了しますが、残りのページでは元に戻ります。ページの前dashboard
にユーザーに一度だけ提示するチュートリアルを持っていたので、Androidの戻るボタンをオーバーライドしてdashboard
、押された場合に終了するようにし、このコードでうまく動作するようにする必要がありました:
angular
.module('az-app')
.controller('DashboardController', function ($scope, $state, $ionicPlatform) {
/**
* While user on dashboard.html we don't want Android back button to return
* to tutorial views so we override it so that in case that back button is pressed
* to exit app which is in accordance with android lifecycle.
*
*/
$ionicPlatform.registerBackButtonAction(function () {
if($state.is('/dashboard') || $state.is('dashboard')){
navigator.app.exitApp();
}
}, 100);
});
問題は、次のビューに移動しても終了ボタンとして機能することですが、ダッシュボードではない他のビューの戻るボタンにしたいので、次のコントローラーでこれを試しました:
angular
.module('az-app')
.controller('DirMedicoController', function ($scope, $state, $ionicPlatform) {
$ionicPlatform.registerBackButtonAction(function () {
navigator.app.backHistory();
}, 100);
});
そのため、機能が返されますが、過去のコントローラーから戻ってきたときに再度dashboard
押すと、その機能がオーバーライドされ、終了する代わりに元に戻ります。
アップデート
以下のmudasser ajazによる回答のおかげで、最終的に機能させることができました。回答は次のとおりです。
angular
.module('az-app')
.controller('DashboardController', function ($scope, $state, $ionicPlatform, $location, $ionicHistory) {
/**
* While user on dashboard.html we don't want Android back button to return
* to tutorial views so we override it so that in case that back button is pressed
* to exit app which is in accordance with android lifecycle.
*
* Else if not on dashboard just work as normal back button
*
*/
$ionicPlatform.registerBackButtonAction(function() {
if ($location.path() === "/dashboard") {
navigator.app.exitApp();
}
else {
$ionicHistory.goBack();
}
}, 100);
$scope.backToPolicy = function () {
$state.go('intro');
}
$scope.showDirMedico = function () {
$state.go('dirmedico');
}
});