2015-02-21 7 views
7

Ho problemi con lo stack ionico e cronologico quando si utilizzano i menu e le schede laterali.Stack cronologico ionico quando si utilizza il menu laterale e le schede

ho creato un esempio plunker qui: http://embed.plnkr.co/XK6seY9mDypTW6GcsCpj/preview

passi da seguire per arrivare al problema:

  1. menu laterale aperta
  2. Accedere alla "Lista Master"
  3. Scegli uno dei articoli
  4. Ti verrà reindirizzato alla scheda dati generali della pagina di dettaglio

Il problema è che non c'è alcun pulsante di ritorno visualizzato in navigazione da ionico stesso. Ho creato un pulsante back proprio che chiama $ ionicGoBack ($ event) per vedere se ionic ha o meno lo stack della cronologia. Ma quando si fa clic su questo pulsante, si vedrà che ionic non torna all'elenco principale, ma resterà nella scheda generale dei dati della pagina dei dettagli.

Qualcuno può dirmi qual è il problema? Sono a conoscenza delle schede con il proprio stack cronologico, tuttavia la scheda dovrebbe conoscere il suo antenato o mi sbaglio?

Molte grazie in anticipo per il vostro aiuto!

migliori saluti

+0

aventi lo stesso problema. La vista con il menu laterale non viene aggiunta alla cronologia. Se faccio '$ ionicHistory.currentView()' Sto ottenendo un valore nullo o il valore della vista precedente. – cor

risposta

0

Ogni ione-scheda ha it's own history stack. Quando premi un elemento nell'elenco e vai a general-data /: id, stai creando un nuovo stack cronologia - nota che ogni scheda ha la sua visualizzazione ion-nav.

Mi sono imbattuto in questo prima, e ho appena usato lo stile css delle schede e collegato un ng-click o ng-href a ciascuna scheda e continuo a lavorare sullo stack cronologico corrente, e forse riusare la barra delle schede come un modello o una direttiva.

Spero che questo aiuti!

8

Ciò è dovuto al fatto che la direttiva menu-close reimposta lo stack cronologico (come spiegato here).

Se rimuovi "menu-close" dai tuoi elementi, mantieni la cronologia, ma perdi parte del comportamento previsto.

Come soluzione, è possibile sviluppare la propria direttiva (diciamo "menu-close-keep-history") per sostituire quella "menu-close".

myModule.directive('menuCloseKeepHistory', ['$ionicHistory', function($ionicHistory) { 
    return { 
     restrict: 'AC', 
     link: function($scope, $element) { 
      $element.bind('click', function() { 
       var sideMenuCtrl = $element.inheritedData('$ionSideMenusController'); 
       if (sideMenuCtrl) { 
        $ionicHistory.nextViewOptions({ 
         historyRoot: false, 
         disableAnimate: true, 
         expire: 300 
        }); 
        sideMenuCtrl.close(); 
       } 
      }); 
     } 
    }; 
}]); 

Questo dovrebbe fare il trucco.

+0

Non vedo alcun utilizzo di menu-close nel codice sorgente. Come utilizzerei esattamente la nuova direttiva? –

0

Solo un piccolo trucco che ho scoperto. Se non si desidera che le schede abbiano il proprio stack cronologico. Basta aggiungere un div sopra le tue schede ioniche.

EG:

<div ng-show="vm.loading"> 
    <div style="width: 50px; margin: 0 auto;"> 
    <ion-spinner></ion-spinner> 
    </div> 
</div> 

<ion-tabs data-ng-controller="something as vm" ng-hide="vm.loading"> 
4

Bene, invece di direttiva personalizzato, si può usare menu-toggle invece di menu-close Quando si utilizza

menu a ginocchiera

ionica tiene traccia del tuo n cronologia delle avventure

0

È sempre possibile sovrascrivere $ ionicGoBack per tutti i controller, quindi impostare una vista predefinita se lo storico non ha backview.

E.g.

$rootScope.$ionicGoBack = function() { 
     if($ionicHistory.backView() == null || !angular.isDefined($ionicHistory.backView())){ 
      $state.go("app.default", {});   
     }else{ 
      $ionicHistory.goBack(); 
     } 
    }; 
Problemi correlati