2015-01-29 3 views
6

Non riesco a capire come ottenere un pulsante Indietro per apparire in una vista che contiene un lato ionico direttiva -menus.ionico/angolare 1.3 - Mancato pulsante di navigazione ion-nav quando sono presenti menu di ion-view

Ecco l'esempio più semplice che sia venuto fuori: http://codepen.io/jsplaine/pen/YPxvXL?editors=101.

Si noti che le viste ioni nello stato x.emptyView e nello stato x.emptySideMenu sono figli della vista ion-nav dello stato x.

Ecco un esempio più approfondita, in cui esiste un side-menu che è in realtà popolata: http://codepen.io/jsplaine/pen/ZYJRYW?editors=101

Ecco il router di base, per la prima codepen:

angular.module('ionicApp', ['ionic']) 
.config(function($stateProvider, $urlRouterProvider) { 
    $urlRouterProvider.otherwise('/'); 

    $stateProvider 
    .state('app', { 
     url: "/", 
     templateUrl: "templates/home.html", 
     controller: 'AppCtrl' 
    }) 

    .state('x', { 
     url: "/x", 
     abstract: true, 
     template: '<ion-nav-view animation="slide-left-right"/>' 
    }) 

    .state('x.emptyView', { 
     url: "/empty-view", 
     templateUrl: "templates/empty_view_only.html" 
    }) 

    .state('x.emptySideMenu', { 
     url: "/empty-side-menu", 
     templateUrl: "templates/empty_side_menu.html" 
    }) 
}) 

C'è un secondo problema con la codepen più approfondita. A seconda di quale scheda si fa clic per prima, seconda o terza, il modello corrispondente viene memorizzato nella cache per la navigazione futura su ENTRAMBI il 2 ° e il 3 ° modello. Prima clicca il 2 °, poi il 3 °. Quindi ricominciare e fare clic sulla terza prima poi sulla seconda. Il fatto che ciò stia accadendo mi fa pensare che sto usando male l'ui-router in qualche modo.

Inoltre non capisco perché devo definire ion-nav-view in index.html AND nel modello di stato astratto ('x'). Non è stato 'x' un figlio di index.html (lo stato vuoto)?

Qualcuno può capire come modificare entrambe le codepens in modo che il pulsante Indietro appaia sulle viste contenenti una direttiva del menu sullo ion-side e per il secondo codepen .. il 2 ° e 3 ° problema di caching della scheda è stato risolto?

risposta

5

La soluzione può essere visto qui:

http://codepen.io/jsplaine/pen/wBqNmw?editors=101

sembra che ioni collaterali menu genitore ionico-vista ha bisogno di un bambino di ioni-nav-bar, e consentono-menu- with-back-views deve essere impostato su true.

<!-- Side Menu Nav and Burger Defined --> 
<script id="templates/side_menu_with_nav.html" type="text/ng-template"> 
    <ion-view view-title="Side Menu with Nav and Burger"> 
     <ion-nav-bar></ion-nav-bar> <!-- HERE --> 
     <ion-side-menus enable-menu-with-back-views="true"> 
      <ion-side-menu-content> 
       <ion-nav-bar> 
        <ion-nav-back-button class="button-icon ion-arrow-left-c"></ion-nav-back-button> 
        <ion-nav-buttons side="right"> 
         <button class="button button-icon button-clear ion-navicon" menu-toggle="right"></button>      
        </ion-nav-buttons> 
       </ion-nav-bar> 
.... 

Poiché la direttiva ionico/menuToggle docs Stato: https://github.com/driftyco/ionic/blob/master/js/angular/directive/menuToggle.js#L1

  • Button ### Hidden sui bambini Visto
  • Per impostazione predefinita, il pulsante del menu a ginocchiera apparirà solo su una radice
  • pagina del menu laterale di livello. La navigazione verso le viste secondarie nasconderà il pulsante di commutazione menu
  • . Possono essere resi visibili sulle pagine figlio impostando l'attributo
  • enable-menu-con-back-view della {@link> ionic.directive: ionSideMenus}
  • direttiva su true.
+0

Ouch, questo fa sì che il contenuto del menu del lato ionizzatore lampeggi quando i menu del lato-ion visualizzano carichi quando si esegue un emulatore o un telefono reale (Android). Non posso averlo – Squeaky

3

Mi chiedo se gli autori non abbiano preso in considerazione il tuo caso. Il loro modello è un menu a scorrimento che scorre solo parzialmente e può essere attivato con l'icona di un menu. Quindi potresti essere un po 'fuori dal paradigma ma questo sembrava funzionare per me anche se un po' debole per la duplicazione del codice della barra di navigazione nel modello.

<script id="templates/empty_side_menu.html" type="text/ng-template"> 
    <ion-view view-title="Empty side menu"> 
    <ion-nav-bar align-title="center" class="nav-title-slide-ios7 bar-stable"> 
     <ion-nav-back-button class="button-icon ion-arrow-left-c"> 
     </ion-nav-back-button> 
    </ion-nav-bar> 

    <ion-side-menus>   
    </ion-side-menus> 
    </ion-view> 
</script> 
+0

Grazie.Anche se controlli la seconda codepen, c'è un menu laterale con il pulsante di attivazione del menu che menzioni. Questo pulsante è definito all'interno di

. La tua soluzione definisce una barra di navigazione ionica sopra/fuori la direttiva dei menu di ion-side. È strano perché c'è un attributo dei menu sul lato dello schermo chiamato "menu di abilitazione con vista posteriore" che in realtà ** impedisce ** l'abilitazione di un menu laterale quando è presente un pulsante Indietro! Così strano. puoi far funzionare la soluzione insieme a un pulsante di attivazione del menu laterale? – Squeaky

+0

Questo funziona per me, hai qualche idea del perché questo funziona? Ho pensato che forse se riuscissi a capire perché funziona, potrei trovare una soluzione più elegante della duplicazione del codice. –