2016-03-22 11 views
4

Ich entwickle eine App mit Ionic Framework, Wie kann ich das Menü und den Popover-Button nur auf Login-Seiten verstecken? und ich möchte nur ein Seitenmenü in einigen konkreten Ansichten zeigen, aber nicht in jeder Ansicht. Bitte helfen Sie mir, ich bin neu in ionischen frameworkdsSo entfernen Sie das Menüsymbol nur auf der Anmeldeseite - ionic?

i want to remove menu and popover button in login page only ->

.controller('AppCtrl', function($scope, $ionicModal, $ionicPopover, $timeout) { 
    // Form data for the login modal 
    $scope.loginData = {}; 
    $scope.isExpanded = false; 
    $scope.hasHeaderFabLeft = false; 
    $scope.hasHeaderFabRight = false; 

    var navIcons = document.getElementsByClassName('ion-navicon'); 
    for (var i = 0; i < navIcons.length; i++) { 
     navIcons.addEventListener('click', function() { 
      this.classList.toggle('active'); 
     }); 
    } 
     // .fromTemplate() method 
    var template = '<ion-popover-view>' + 
        ' <ion-header-bar class="popbg">' + 
        '  <h1 class="title"><i class="ion ion-android-settings padding-right"></i>Settings</h1>' + 
        ' </ion-header-bar>' + 
        ' <ion-content>' + 
        ' <ion-list> ' + 
        ' <ion-item href="#/app/aboutapp"><i class="ion ion-information-circled padding-right"></i> About App</ion-item> ' + 
        ' <ion-item href="#/app/profile"><i class="ion ion-person padding-right"></i>Profile</ion-item> ' + 
        ' <ion-item href="#/app/change-password"><i class="ion ion-key padding-right"></i>change password</ion-item> ' + 
        ' <ion-item href="#/app/login"><i class="ion ion-log-out padding-right"></i>Logout</ion-item> ' + 
        ' </ion-list> ' + 
        ' </ion-content>' + 
        '</ion-popover-view>'; 

    $scope.popover = $ionicPopover.fromTemplate(template, { 
     scope: $scope 
    }); 
    $scope.closePopover = function() { 
     $scope.popover.hide(); 
    }; 
    //Cleanup the popover when we're done with it! 
    $scope.$on('$destroy', function() { 
     $scope.popover.remove(); 
    }); 
    //////////////////////////////////////// 
    // Layout Methods 
    //////////////////////////////////////// 

    $scope.hideNavBar = function() { 
     document.getElementsByTagName('ion-nav-bar')[0].style.display = 'none'; 
    }; 

    $scope.showNavBar = function() { 
     document.getElementsByTagName('ion-nav-bar')[0].style.display = 'block'; 
    }; 

    $scope.noHeader = function() { 
     var content = document.getElementsByTagName('ion-content'); 
     for (var i = 0; i < content.length; i++) { 
      if (content[i].classList.contains('has-header')) { 
       content[i].classList.toggle('has-header'); 
      } 
     } 
    }; 

    $scope.setExpanded = function(bool) { 
     $scope.isExpanded = bool; 
    }; 

    $scope.setHeaderFab = function(location) { 
     var hasHeaderFabLeft = false; 
     var hasHeaderFabRight = false; 

     switch (location) { 
      case 'left': 
       hasHeaderFabLeft = true; 
       break; 
      case 'right': 
       hasHeaderFabRight = true; 
       break; 
     } 

     $scope.hasHeaderFabLeft = hasHeaderFabLeft; 
     $scope.hasHeaderFabRight = hasHeaderFabRight; 
    }; 

    $scope.hasHeader = function() { 
     var content = document.getElementsByTagName('ion-content'); 
     for (var i = 0; i < content.length; i++) { 
      if (!content[i].classList.contains('has-header')) { 
       content[i].classList.toggle('has-header'); 
      } 
     } 

    }; 

    $scope.hideHeader = function() { 
     $scope.hideNavBar(); 
     $scope.noHeader(); 
    }; 

    $scope.showHeader = function() { 
     $scope.showNavBar(); 
     $scope.hasHeader(); 
    }; 

    $scope.clearFabs = function() { 
     var fabs = document.getElementsByClassName('button-fab'); 
     if (fabs.length && fabs.length > 1) { 
      fabs[0].remove(); 
     } 
    }; 
}) 

.controller('LoginCtrl', function($scope, $timeout, $stateParams, ionicMaterialInk) { 

    $scope.$parent.clearFabs(); 
    $timeout(function() { 
     $scope.$parent.showHeader(); 
    }, 0); 
    ionicMaterialInk.displayEffect(); 

}) 
//menu.html 

<ion-nav-bar class="bar-assertive-900" ng-class="{expanded: isExpanded, 'has-header-fab-left': hasHeaderFabLeft, 'has-header-fab-right': hasHeaderFabRight}" align-title="left"> 
      <ion-nav-back-button class="no-text"> 
      </ion-nav-back-button> 
      <ion-nav-buttons side="left"> 
       <button class="button button-icon button-clear ion-navicon" menu-toggle="left"> 
       </button> 
      </ion-nav-buttons> 
      <ion-nav-buttons side="right"> 
       <button class="button button-icon button-clear ion-android-more-vertical" id="menu-popover" ng-click="popover.show($event)"> 
       </button> 
      </ion-nav-buttons> 
     </ion-nav-bar> 

//Login.html

+0

Versuch durch Entfernen Ion-nav-Tasten aus menu.html und fügen Sie nur in bestimmten Ansicht u wollen .. oder ein $ rootScope Variable herzustellen und verwenden, es zu verbergen! in menu.html wenn du auf der Anmeldeseite bist ..! –

Antwort

4

Wenn Sie die Seite Menü-Taste in einem entfernen Ansicht Sie müssen nur in diese Ansicht einfügen:

<ion-nav-buttons side="left"></ion-nav-buttons> 
Hier

ist ein Beispiel:

http://codepen.io/beaver71/pen/NNpVKL?editors=1010

+0

Danke seine Arbeit gut für mich – sridharan

+0

, wenn ich auf die nächste Seite Popover-Symbol nicht anzeigen, aber wenn ich die Seite aktualisieren anzeigen – sridharan

Verwandte Themen