2014-09-02 6 views
5

Ich habe eine Registerkarte, die nur die Liste der Elemente zeigt. und Registerkarte "Einstellungen", die eine verschachtelte Ansicht zum Einstellen verschiedener Konfigurationen enthält.ionic Zurück-Taste falsch beim Umschalten der Tabs

Wenn ich in dieser bestimmten Reihenfolge navigieren, wird die Zurück-Taste falsch dargestellt, oder wenn es angezeigt ist, wird der Titel nicht links erhalten: 37px

Dies ist, wie ich die Navigationsleiste erschaffe. die Haupt-Einstellungen öffnet Tab anstelle der zuvor geöffneten verschachtelte Ansicht

<ion-nav-bar class="bar-stable no-animation" align-title="left"> 
    <ion-nav-back-button class="button-icon icon ion-ios7-arrow-back"></ion-nav-back-button> 
</ion-nav-bar> 

enter image description here

Gibt es eine Lösung, entweder auf die Geschichte dieses Register zu löschen, so beim Klicken auf sie zurück? Oder wenn es angezeigt werden soll, sollte es die Linke des Titels richtig berechnen.

Hier ist eine codepen Demo. Klicken Sie auf die Tabs in dieser Reihenfolge.

1. On main page, click on Scientific Facts 
2. After view changes, click on Contacts tab 
3. Then click on Home tab again. It reproduces the behavior. 

Update:

Bisher was ich gefunden habe ist, dass es eine $scope.$watch ist die, ob entscheidet Taste ein- bzw. ausblenden zurück. und dies wird spät ausgelöst (nach Berechnung und Ausrichtung des Titels). Daher erhält die Berechnung leftWidth die Breite der Schaltfläche nicht zurück.

+1

Ich hatte dieses Problem eine Weile zurück. Ich löste es, indem ich die "historyID" des Home-Tabs speicherte und direkt darauf ging. Ich denke nicht, dass es eine großartige Lösung ist, also bin ich gespannt, was andere daraus machen. In der Zwischenzeit können Sie sehen, was ich hier getan habe ... http://codepen.io/MrOnosa/pen/ILCed – Onosa

+0

Hmm .. das ist eine schöne Workaround. Mal sehen, ob irgendjemand eine Lösung hat. Ich habe versucht, in ionic.bundle.js zu debuggen. Es scheint, dass der Status der Zurück-Schaltfläche geändert wird, nachdem die Registerkarte gewechselt wurde.Wenn wir in der verschachtelten Ansicht auf eine neue Registerkarte wechseln, wird der Titel eingerückt. Dies ist auch ein verwandter Fehler. –

Antwort

4

Wenn Tabs wie diese verwendet werden, enthält jedes Tab seinen eigenen Verlauf. Es zeigt tatsächlich die Zurück-Schaltfläche korrekt an, da der Status der Registerkarte "Home" in eine Unterseite geändert wurde. Der Zurück-Button bringt Sie dann zurück zur Startseite dieses Tabs (die Back-Taste ist für jeden Tab spezifisch!). Der erste Klick/Antippen auf eine Tab-Schaltfläche führt zum Wechseln der Tabs, ein zweiter Klick/Antippen führt den Benutzer zur Standardseite für diese Registerkarte. Der Fehler besteht manchmal darin, dass die Breite der Rücktaste immer noch angewendet wird.

Ich glaube, das Ionic-Team arbeitet auch an einigen Verbesserungen und Korrekturen.

Sie können $ionicNavBarDelegate.showBackButton(false); im Controller für die Hauptseite verwenden, um die Zurück-Schaltfläche während dieser Ansicht zu deaktivieren. Es gibt auch die nav-clear Direktive, die Sie auf ein Anker-Tag setzen können, um die Zurück-Schaltfläche in der verknüpften Ansicht explizit auszublenden.

-Controller Beispiel

angular.module('App').controller('HomeCtrl', function ($scope, $ionicNavBarDelegate) { 
    // Disable back button on this controller 
    $ionicNavBarDelegate.showBackButton(false); 
}); 
+0

Wenn 'showBackButton' auf false gesetzt ist, wird in allen Fällen die Zurück-Schaltfläche nicht mehr angezeigt, oder? Ich möchte, dass es gezeigt wird. Deaktivieren Sie entweder den Verlauf (und öffnen Sie die Hauptregisterkarte beim ersten Klick) oder zeigen Sie die Zurück-Taste richtig an. Siehe [hier] (https://github.com/driftyco/ionic/issues/2129), es wurde als Fehler und ausstehende Lösung akzeptiert. Ich werde versuchen, daran zu arbeiten, wenn ich kann. –

0

Wenn Sie nur Angular Routen Verwenden follwoing

$ route.reload()

Sie auch folgende Verwendung verwenden können, wenn Sie UI verwenden -Router on Ionic

$ state.go ($ state.current, {}, {reload: true});

Verwandte Themen