删除Ionic/Angular JS中基于侧菜单的模板中的导航栏

Remove navigation bar in sidemenu based template in Ionic/Angular JS

本文关键字:导航 菜单 Ionic Angular JS 删除 于侧      更新时间:2023-09-26

我使用Ionic Framework创建了一个应用程序,它运行得很好。它是基于侧菜单模板的,所以我总是在应用程序的顶部有一个导航栏。

<ion-side-menus enable-menu-with-back-views="false">
  <ion-side-menu-content>
    <ion-nav-bar class="bar-calm">
      <ion-nav-back-button></ion-nav-back-button>
      <ion-nav-buttons side="left">
        <button class="button button-icon button-clear ion-navicon-round" menu-toggle="left"></button>
      </ion-nav-buttons>
    </ion-nav-bar>
    <ion-nav-view name="menuContent"></ion-nav-view>
  </ion-side-menu-content>
  <ion-side-menu side="left">
    <ion-content>
      <a menu-close href="#/app/bla">
        <div id="profile-item">
          <i class="icon ion-card"></i> Bla
        </div>
      </a>
      <a menu-close href="#/app/register">
        <div id="profile-item">
          <i class="icon ion-card"></i> Sign-up
        </div>
      </a>
      <a menu-close href="#/app/login">
        <div id="profile-item">
          <i class="icon ion-card"></i> Login
        </div>
      </a>
    </ion-content>
  </ion-side-menu>
</ion-side-menus>

app.js:

$stateProvider.state('app.login', {
  url: '/login',
  views: {
    'menuContent': {
      templateUrl: 'templates/login.html',
      controller: 'LoginCtrl'
    }
  }
})
$stateProvider.state('app.start', {
  url: '/start',
  views: {
    'menuContent': {
      templateUrl: 'templates/start.html',
      controller: 'StartsCtrl'
    }
  }
})

现在对于注册和登录视图,我根本不想显示导航栏。如何在特定视图中删除它?我发现这很难,因为导航栏是在视图之前调用的menu.html中定义的。

我不得不修改app.js:中的路由定义

$stateProvider.state('login', {
  url: '/login',
  templateUrl: 'templates/login.html',
  controller: 'LoginCtrl'
})
$stateProvider.state('start', {
  url: '/start',
  templateUrl: 'templates/start.html',
  controller: 'StartsCtrl'
})

仅仅删除嘟嘟按钮是不起作用的,因为用户仍然可以在屏幕上向右滑动以显示菜单。

只需隐藏menu-toggle按钮就可以了。

在rootScope上设置一个变量,根据该变量可以显示/隐藏导航栏切换按钮:

<button ng-if="$root.isShowNav" class="button button-icon button-clear ion-navicon-round" menu-toggle="left">

在应用程序中设置此变量的值。运行:

.run(function($ionicPlatform, $rootScope) {
  // $rootScope.isShowNav = true/false based on some condition.
}

例如,在这里你可以做这样的事情:

.run(function($ionicPlatform, $rootScope) {
  $rootScope.$on("$stateChangeStart", function(event, toState, toParams, fromState) {
    if (toState.name !== "app.login" || toState.name !== "app.start") {
      $rootScope.isShowNav = true; 
    }
    else {
      $rootScope.isShowNav = false;
    }
   }
}