【问题标题】:How to force Ionic display back button on certain page?如何在某些页面上强制 Ionic 显示后退按钮?
【发布时间】:2015-09-16 02:43:29
【问题描述】:

当从一个页面导航到另一个页面时,Ionic 会自动在导航栏上显示返回按钮。但是,在某些情况下 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'
    }
  }
})

【问题讨论】:

    标签: ionic-framework


    【解决方案1】:

    你可以在你的控制器中告诉它。试试:

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

    但就像 LeftyX 所说的那样。选项卡到非选项卡视图的历史记录功能有问题。

    【讨论】:

      【解决方案2】:

      当您从一个视图导航到另一个视图时,Ionic 会管理 history。

      $ionicHistory 在用户浏览一个 应用程序。类似于浏览器的行为方式,Ionic 应用程序能够 跟踪前一个视图、当前视图和前向视图 查看(如果有的话)。然而,典型的网络浏览器只保留 以线性方式跟踪一个历史堆栈。

      与传统的浏览器环境不同,应用程序和网络应用程序具有 平行的独立历史,例如标签。用户应该 在一个选项卡上深入浏览几页,然后切换到新选项卡并 后退,后退按钮与上一个选项卡无关,而是与 在该选项卡中访问过的前几页。

      github 上存在一个尚未修复的错误(只会在 2.0 中修复),Adam Bradley 指出:

      后退按钮不显示,因为当您进入选项卡时,它 输入它自己的“历史”,这意味着每个选项卡都有自己的导航返回 并转发。

      因此,基本上,当您从标签切换到常规视图时,您将失去后退按钮。

      你可以做的是自己创建一个:

      <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>
        

        【讨论】:

        • 请格式化您的代码,使其易于阅读并解释其工作原理和原因
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-15
        • 2011-03-22
        • 1970-01-01
        • 2017-06-18
        • 2021-05-21
        • 1970-01-01
        相关资源
        最近更新 更多