Переопределить кнопку возврата оборудования Android, заставить его выйти на одной странице и вернуться на следующих страницах
Я использую следующий контроллер, чтобы в dashboard
Кнопка возврата на страницу Android выходит из приложения, но на остальных страницах она возвращается. Так как раньше 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');
}
});
1 ответ
Сделайте это в вашем контроллере приборной панели
$ionicPlatform.registerBackButtonAction(function() {
//var path = $location.path()
if ($location.path() === "/dashboard" || $location.path() === "dashboard") {
navigator.app.exitApp();
}
else {
$ionicHistory.goBack();
//navigator.app.goBack();
}
}, 100);
И добавьте $location и $ionicHistory в качестве зависимости
.controller('DashboardController', function ($scope, $state, $ionicPlatform, $location, $ionicHistory) {
Удалить registerBackButtonAction
с другого контроллера.