2014-11-11 6 views
5

W ramach jonowych staram się ukryć przycisk menu warunkowo. Z innych powodów musiałem podzielić menu w swoim własnym kontrolerze (nie chcę ponownie renderować menu i paska nagłówków po odświeżeniu), więc nagłówek nie jest w widoku jonów. Stworzyłem watcher na zmiennej warunkowej (stateparam) w kontrolerze nagłówka. Dziennik konsoli poprawnie wyprowadza zmienną warunkową, ale widok nie jest aktualizowany (przycisk menu jest zawsze wyświetlany).Warunkowo ukryj przycisk menu w ramie jonowej poza <ion-view>

Jest to szablon:

<ion-side-menus> 
    <ion-side-menu-content> 
     <ion-nav-bar class="bar-stable nav-title-slide-ios7"> 
      <ion-nav-back-button ng-if="!isHome" class="button-clear"><i class="icon ion-ios7-arrow-back"></i>Back</ion-nav-back-button> 
      <button ng-if="isHome" menu-toggle="left" class="button button-icon icon ion-navicon"></button> 
      <h1 class="title">Title</h1> 

     </ion-nav-bar> 
    <ion-nav-view name="menuContent" animation="slide-left-right"></ion-nav-view> 
</ion-side-menu-content> 

... 
</ion-side-menus> 

iw sterowniku:

$scope.$watch(function(){ 
    return $stateParams.contentUrl; 
}, 
    function(newVal){ 
     console.log(newVal); 
     if(!newVal || newVal === 'someParam'){ 
      $timeout(function(){ 
       $scope.$apply(function(){ 
        $scope.isHome = true; 
       }); 
       console.log("home"); 
      }); 
     } else { 
      $timeout(function(){ 
       $scope.$apply(function(){ 
        $scope.isHome = false; 
       }); 
       console.log("not home"); 
      }); 
     } 
    }); 

Czy istnieje prostszy sposób? Czy może czegoś tutaj brakuje?

Odpowiedz

1

trochę brudny Rozwiązaniem byłoby dać te przyciski identyfikator, a następnie użyć jqlite je ukryć tak w kontrolerze:

angular.element(document.querySelector('#back-button')).addClass('hidden'); 
7

Można użyć atrybutu hide-back-button na elemencie <ion-view> zadeklarować, czy to Widok powinien domyślnie ukryć przycisk Wstecz.

http://ionicframework.com/docs/nightly/api/directive/ionView/

<ion-view hide-back-button="true"> 
    <!-- view contents --> 
</ion-view> 
+0

Dzięki, ale niestety nie mogę użyć jonowy-view, bo to powoduje, że nagłówek, aby rerendered na state.go :( – mhanisch

+0

rzeczywiście może widok jonowej i jonowej nav-bar są świadomi siebie Umieść atrybut ukrytego przycisku na dowolnym widoku, który chcesz ukryć przycisk Wstecz, a widok jonów poinformuje pasek nawigacji jonów, aby ukryć przycisk.Być może twój przykład jest niewystarczająco jasny –

+0

przycisk powrotu różni się od przycisku menu bocznego, przycisk ukrytego przycisku nie działa w bocznym menu przycisku – raykin

1

Ustawianie hide-back-button false nie działa dla mnie. Jednak w moim przypadku łatwiej rozwiązaniem było mieć

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

wewnątrz <ion-view>. Ma to po prostu zawierać puste przyciski nawigacji po lewej stronie. To mi się udało.

0

Można to zrobić w prosty sposób:

<ion-side-menus enable-menu-with-back-views = "true"> 

i na konkretnych stronach gdzie chcesz ukryć menu i paska nawigacji, powiedzmy swój login strona (wewnątrz logowania Controller), wystarczy wpisać - nie zapomnij uwzględnić określonych obiektów w funkcji kontrolera.

$scope.$on('$ionicView.beforeEnter', function (event) { 
$scope.$root.showMenuIcon = false; 
$ionicSideMenuDelegate.canDragContent(false); 
}); 

$scope.$on('$ionicView.beforeLeave', function (event) { 
    $scope.$root.showMenuIcon = true; 
    $ionicSideMenuDelegate.canDragContent(true); 
}); 
Powiązane problemy