Когда я перехожу с домашней страницы на другую, кнопка «Назад» не отображается на панели навигации. Однако есть определенные случаи, когда ионный дисплей отображает кнопку возврата. например, перейдите на страницу настроек, нажмите кнопку возврата на страницу профиля, и кнопка мобильного банка также работает нормально.
Цель состоит в том, что пользователь должен перейти на домашнюю страницу при нажатии кнопки возврата мобильного оборудования с кнопкой возврата на панель навигации и на подтверждении отображения домашней страницы при нажатии кнопки возврата на аппаратном уровне.
Я уже просмотрел множество вопросов и ответов по стеку, но ничего не нашел для этого подходящего решения.
Вот мой код, который пытается -
.run(function($ionicPlatform, $rootScope, $ionicLoading, $ionicPopup, $ionicHistory, $localStorage, $timeout, $http, $state) {
$ionicPlatform.ready(function() {
$ionicPlatform.registerBackButtonAction(function(event) {
if ($state.current.name= = "app.home") {
$ionicPopup.confirm({
title: 'System',
template: 'are you sure you want to exit?'
}).then(function(res) {
if (res) {
ionic.Platform.exitApp();
}
})
}
}, 101);
});
})
Как заставить Ionic отображать кнопку возврата на определенной странице?
.config(function($stateProvider, $urlRouterProvider){
$stateProvider
.state('app', {
url: '/app',
abstract: true,
templateUrl: 'templates/menu.html',
controller: 'AppCtrl'
})
.state('app.home', {
url: '/home',
views: {
'menuContent': {
templateUrl: 'templates/home.html',
controller: 'HomeCtrl'
}
}
})
.state('app.settings', {
cache:false,
url: '/settings',
views: {
'menuContent': {
templateUrl: 'templates/setting/settings.html',
controller: 'SettingsCtrl'
}
}
})
.state('app.wfhadd', {
cache:false,
url: '/wfh/wfhadd',
views: {
'menuContent': {
templateUrl: 'templates/wfh/addwfh.html',
controller: 'AddWfhCtrl'
}
}
})
.state('app.wfhlist', {
cache:false,
url: '/wfh/wfhlist',
views: {
'menuContent': {
templateUrl: 'templates/wfh/wfhlist.html',
controller: 'listWfhCtrl'
}
}
})
.state('app.login', {
cache: false,
url: '/login/:userid/:logpass',
views: {
'menuContent': {
templateUrl: 'templates/login.html',
controller: 'LoginCtrl',
params: {'userid': null, 'logpass': null}
}
}
})
.state('app.profile', {
cache: false,
url: '/settings/profile',
views: {
'menuContent': {
templateUrl: 'templates/setting/profile.html',
controller: 'ProfileCtrl'
}
}
})
.state('app.activities', {
cache: false,
url: '/activities',
views: {
'menuContent': {
templateUrl: 'templates/activities.html',
controller: 'ProfileCtrl'
}
}
})
.state('app.leave', {
cache: false,
url: '/leave',
views: {
'menuContent': {
templateUrl: 'templates/leave/leave.html',
}
}
})
.state('app.leavelist', {
cache: false,
url: '/leave/allleaves/:id',
views: {
'menuContent': {
templateUrl: 'templates/leave/leavelist.html',
controller: 'LeaveCtrl',
params: {'leaveid': null}
}
}
})
.state('app.leavedtls', {
cache: false,
url: '/leave/details',
views: {
'menuContent': {
templateUrl: 'templates/leave/leavedtls.html',
controller: 'LeaveDtlsCtrl'
}
}
})
.state('app.leaveapply', {
cache: false,
url: '/leave/apply',
views: {
'menuContent': {
templateUrl: 'templates/leave/leaveapply.html',
controller: 'LeaveApplyCtrl'
}
}
})
.state('app.terms', {
url: '/settings/terms',
views: {
'menuContent': {
templateUrl: 'templates/policy.html'
}
}
})
.state('app.about', {
url: '/settings/about',
views: {
'menuContent': {
templateUrl: 'templates/about.html'
}
}
})
;
$urlRouterProvider.otherwise('/app/home');
})
ИЗМЕНИТЬ 1
Теперь я поместил следующий код в контроллер профиля и кнопку «Назад» на странице профиля, но он не работает (не вернуться на домашнюю страницу).
.controller('ProfileCtrl', function($scope,$rootScope, $ionicHistory, $http,$localStorage, $ionicNavBarDelegate){
$scope.$on('$ionicView.beforeEnter', function (event, viewData) {
viewData.enableBack = true;
});
})
Куда его запихивать? любой пример @ Tan
Вы можете добавить его в свой основной контроллер, чтобы это событие всегда регистрировалось.
Отлично. тогда как включить кнопку возврата с помощью этого?
Вы можете использовать ту же функцию $stateChangeStart. я полагал
Ничего страшного - лучше всего подойдет любой рабочий пример ..
вы можете видеть кнопку возврата для дочерних представлений только из корня. Страница настроек - это корень, страница, вложенная в настройки, может видеть только кнопку возврата.
Когда я перехожу к боковое меню страницы настроек, в заголовке нет кнопки возврата. Вроде вся страница выглядит. @ Абинеш
на странице настроек вы можете увидеть только кнопку меню в заголовке. Потому что настройка - это корень состояния. вы можете увидеть кнопку «Назад» при настройке вложенных страниц
Ага. Но я хочу показать там кнопку "Назад". Это моя цель.
Затем создайте кнопку возврата в шаблонах menu.html и задайте корневое условие для этой страницы настроек.
Спасибо за любой пример? @Abinesh
Я привел пример, пожалуйста, проверьте его и ответьте



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы пробовали использовать событие
$stateChangeStart? stackoverflow.com/questions/21867569/…