在Ionic / Angular JS中删除基于sidemenu的模板中的导航栏

时间:2016-01-02 16:14:05

标签: javascript angularjs ionic-framework

我使用Ionic Framework创建了一个应用程序,效果很好。它基于sidemenu-template,所以我总是在应用程序的顶部有一个导航栏。

<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中定义,在视图之前调用。

2 个答案:

答案 0 :(得分:1)

我必须修改app.js中的路由定义:

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

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

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

答案 1 :(得分:0)

只需隐藏menu-toggle按钮就可以解决问题。

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

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

在应用程序的.run中设置此变量的值:

.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;
    }
   }
}