Как принудительно нажать кнопку возврата звука на определенной странице?

При переходе с одной страницы на другую Ionic автоматически отображает кнопку возврата на панели навигации. Однако есть определенные случаи, когда ионный сигнал не отображает кнопку "Назад". Например, при переходе с вкладки на вкладку "Нет".

Как заставить Ionic отображать кнопку возврата на определенной странице?

JavaScript:

.state('app.tab.playlists', { //<!-- Tab content page
  url: '/playlists',
  views: {
    'tab-Content': {
      templateUrl: 'templates/playlists.html',
      controller: 'PlaylistsCtrl'
    }
  }
})

.state('app.singer', { //<!-- Not tab content page (if you navigate from tab page to this page, back button will not displayed)
  url: '/singer',
  views: {
    'menuContent': {
      templateUrl: 'templates/singer.html'
    }
  }
})

Ответ 1

Вы можете сказать это в своем контроллере. Попробуйте:

 .controller('yourCtrl', function($scope) {

$scope.$on('$ionicView.beforeEnter', function (event, viewData) {
  viewData.enableBack = true;
}); 

})

Но, как сказал LeftyX. Функция истории для отображения вкладки в не-вкладке является ошибкой.

Ответ 2

Ionic управляет history, пока вы переходите с одного взгляда на другой.

$ionicHistory отслеживает представления, когда пользователь переходит через приложение. Подобно тому, как ведет себя браузер, приложение Ionic может отслеживать предыдущее представление, текущий вид и вперед (если есть). Однако обычный веб-браузер поддерживает только отслеживать один стек истории линейным способом.

В отличие от традиционной среды браузера приложения и веб-приложения параллельные независимые истории, например, с вкладками. Если пользователь переместите несколько страниц на одну вкладку, а затем переключитесь на новую вкладку и назад, кнопка назад относится не к предыдущей вкладке, а к предыдущих страниц, посещенных на этой вкладке.

Там обнаружена ошибка на github, которая еще не исправлена ​​(и будет исправлена ​​только в версии 2.0), где Адам Брэдли заявляет:

Кнопка "Назад" не отображается, потому что когда вы переходите на вкладку, она введите его собственную "историю", то есть каждая вкладка имеет свою собственную навигацию назад и вперед.

Итак, в основном, когда вы переходите с табуляции на обычный просмотр, вы потеряете кнопку "Назад".

Что вы можете сделать, так это создать его самостоятельно:

<ion-nav-buttons side="left">
    <button class="button back-button buttons button-clear header-item" ng-click="goBack()">
        <i class="icon ion-ios-arrow-back"> Back</i> 
    </button>
</ion-nav-buttons>

и поместите его в свой вид:

<ion-view view-title="home">

  <ion-nav-buttons side="left">
    <button class="button back-button buttons button-clear header-item" ng-click="goBack()">
      <i class="icon ion-ios-arrow-back"> Back</i> 
    </button>
  </ion-nav-buttons>

    <ion-content padding='true' scroll='false' has-footer='false'>

        <div class="card">
            <div class="item item-text-wrap">
                HOME PAGE
            </div>
        </div>

    </ion-content>

</ion-view>

Как вы можете видеть, я использовал кнопку ng-click="goBack()" для кнопки.

В вашем контроллере вы просто:

$scope.goBack = function(){
    $ionicHistory.goBack();
}

не забудьте ввести $ionicHistory в ваш контроллер.

PS: Это чрезмерно упрощенное решение, поскольку оно не проверяет, имеет ли история обратную сторону:

$ionicHistory.viewHistory().backView

Ответ 3

Добавьте следующие строки в

<ion-navbar hideBackButton="true">
    <button (click)="back()" class="back-button disable-hover bar-button bar-button-ios back-button-ios bar-button-default bar-button-default-ios show-back-button" ion-button="bar-button" ng-reflect-klass="back-button" ng-reflect-ng-class="back-button-ios" style=""><span class="button-inner"><ion-icon class="back-button-icon icon icon-ios back-button-icon-ios ion-ios-arrow-back" role="img" ng-reflect-klass="back-button-icon" ng-reflect-ng-class="back-button-icon-ios" aria-label="arrow back" ng-reflect-name="ios-arrow-back"></ion-icon><span class="back-button-text back-button-text-ios" ng-reflect-klass="back-button-text" ng-reflect-ng-class="back-button-text-ios">Back</span></span><div class="button-effect"></div></button>