Ионная структура $state.go('app.home'); добавляет обратно кнопку на странице, куда я хочу пойти (как ее удалить)?
У меня есть приложение с меню боковой панели. Я на второй странице, и я вызываю функцию контроллера, которая перенаправляет меня на первую страницу, используя:
$state.go('app.home');
Проблема в том, что на этой странице теперь отображается обратная кнопка следующей иконки меню боковой панели, см. изображение ниже:
![enter image description here]()
Может ли кто-нибудь сказать мне, как отказаться от добавления кнопки возврата на страницы, которым присвоено меню боковой панели?
Спасибо за любую помощь.
app.js с конфигурацией маршрутизатора:
angular.module('Test', ['ionic', 'config', 'Test', 'LocalStorageModule'])
.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
if(window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if(window.StatusBar) {
// org.apache.cordova.statusbar required
StatusBar.styleDefault();
}
});
})
.config(function($stateProvider, $urlRouterProvider, localStorageServiceProvider) {
localStorageServiceProvider
.setPrefix('max_relax');
$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.saved', {
url: '/saved',
views: {
'menuContent' :{
templateUrl: 'templates/saved.html',
controller: 'SavedCtrl'
}
}
})
.state('app.settings', {
url: '/settings',
views: {
'menuContent' :{
templateUrl: 'templates/settings.html',
controller: 'SettingsCtrl'
}
}
});
// if none of the above states are matched, use this as the fallback
$urlRouterProvider.otherwise('/app/home');
});
Edit:
Добавлен шаблон меню:
<ion-side-menus>
<ion-pane ion-side-menu-content>
<ion-nav-bar class="bar-stable">
<ion-nav-back-button class="button-clear"><i class="icon ion-ios7-arrow-back"></i> Back</ion-nav-back-button>
</ion-nav-bar>
<ion-nav-view name="menuContent" animation="slide-left-right"></ion-nav-view>
</ion-pane>
<ion-side-menu side="left">
<header class="bar bar-header bar-stable">
<h1 class="title">Menu</h1>
</header>
<ion-content class="has-header">
<ion-list>
<ion-item nav-clear menu-close href="#/app/home">
Home
</ion-item>
<ion-item nav-clear menu-close href="#/app/saved">
Saved
</ion-item>
<ion-item nav-clear menu-close href="#/app/settings">
Settings
</ion-item>
</ion-list>
</ion-content>
</ion-side-menu>
</ion-side-menus>
Ответы
Ответ 1
Используйте $ionicHistory
в своем контроллере перед вызовом $state.go('app.home')
.
.controller('HomeCtrl', function($scope,...,$ionicHistory) {
...
$ionicHistory.nextViewOptions({
disableBack: true
});
$state.go('app.home');
});
Ответ 2
Вы можете установить nextViewOptions перед $state.go('Yourstate'). подобно
В вашем контроллере вы можете написать
$ionicHistory.nextViewOptions({
disableBack: true
});
$state.go('app.home');
Итак, для этого перехода он очистит стек истории и установит следующее представление как root из стека истории.
Ответ 3
На контроллере, который вы хотите вернуть HomeCtrl
:
.controller('SavedCtrl', function($scope,...,$ionicHistory) {
...
$ionicHistory.nextViewOptions({
disableBack: true
});
$state.go('app.home');
})
.controller('HomeCtrl', function($scope,...,$ionicHistory) {
$ionicHistory.clearHistory();
})
Ответ 4
$ionicNavBarDelegate.showBackButton(false);
Ответ 5
Пока у вас есть <ion-nav-back-button></ion-nav-back-button>
, включенный в <ion-nav-bar>
, вы увидите кнопку возврата по умолчанию для любого вида с помощью app
.
Удаление <ion-nav-back-button>
приведет к удалению кнопки "Назад" из всех видов, используя app
. Вы можете выборочно отключить его на основе того, какой шаблон вы просматриваете, установив hide-back-button="true"
в <ion-view>
этого шаблона.
Итак, в вашем случае удаление <ion-nav-back-button class="button-clear"><i class="icon ion-ios7-arrow-back"></i> Back</ion-nav-back-button>
из menu.html
скроет кнопку возврата во всех представлениях с помощью app
.
Ответ 6
У меня тоже была эта проблема при использовании меню со звуковым сопровождением.
В некоторых случаях при выборе опции из бокового меню результирующая страница/представление показывала кнопку возврата в навигационной панели, которой она не должна (потому что выбор опции меню должен reset истории).
Проблема связана с использованием "ng-click" в опции меню, например:
<ion-item menu-close ng-click="showStartPage()" ...>
с 'showStartPage' является методом контроллера, который вызывает $state.go(...).
Решение заключалось в следующем:
<ion-item menu-close href="#/startPage" ...>
Когда все сделано так, Ionic (по-видимому) умеет правильно отслеживать историю навигации.
(я не пробовал, но, вероятно, "ui-sref" вместо "href" тоже работал)