for javascript angularjs angular-ui-router ionic-framework

javascript - for - ionic components



Marco iónico $ state.go(''app.home''); está agregando el botón de retroceso en la página donde quiero ir(¿cómo eliminarlo?) (6)

En el controlador que desea devolver HomeCtrl :

.controller(''SavedCtrl'', function($scope,...,$ionicHistory) { ... $ionicHistory.nextViewOptions({ disableBack: true }); $state.go(''app.home''); }) .controller(''HomeCtrl'', function($scope,...,$ionicHistory) { $ionicHistory.clearHistory(); })

Tengo una aplicación con menú de barra lateral. Estoy en la segunda página y llamo a la función del controlador que me redirige a la primera página usando:

$state.go(''app.home'');

El problema es que en esta página ahora se muestra el botón de retroceso junto al icono del menú de la barra lateral, vea la imagen a continuación:

¿Alguien podría decirme cómo negarme a agregar el botón de retroceso en las páginas que tienen asignado el menú de la barra lateral?

Gracias por cualquier ayuda.

app.js es con la configuración del enrutador es la siguiente:

angular.module(''Test'', [''ionic'', ''config'', ''Test'', ''LocalStorageModule'']) .run(function($ionicPlatform) { $ionicPlatform.ready(function() { // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard // for form inputs) if(window.cordova && window.cordova.plugins.Keyboard) { cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); } if(window.StatusBar) { // org.apache.cordova.statusbar required StatusBar.styleDefault(); } }); }) .config(function($stateProvider, $urlRouterProvider, localStorageServiceProvider) { localStorageServiceProvider .setPrefix(''max_relax''); $stateProvider .state(''app'', { url: ''/app'', abstract: true, templateUrl: ''templates/menu.html'', controller: ''AppCtrl'' }) .state(''app.home'', { url: ''/home'', views: { ''menuContent'' :{ templateUrl: ''templates/home.html'', controller: ''HomeCtrl'' } } }) .state(''app.saved'', { url: ''/saved'', views: { ''menuContent'' :{ templateUrl: ''templates/saved.html'', controller: ''SavedCtrl'' } } }) .state(''app.settings'', { url: ''/settings'', views: { ''menuContent'' :{ templateUrl: ''templates/settings.html'', controller: ''SettingsCtrl'' } } }); // if none of the above states are matched, use this as the fallback $urlRouterProvider.otherwise(''/app/home''); });

Editar:

Plantilla de menú agregada:

<ion-side-menus> <ion-pane ion-side-menu-content> <ion-nav-bar class="bar-stable"> <ion-nav-back-button class="button-clear"><i class="icon ion-ios7-arrow-back"></i> Back</ion-nav-back-button> </ion-nav-bar> <ion-nav-view name="menuContent" animation="slide-left-right"></ion-nav-view> </ion-pane> <ion-side-menu side="left"> <header class="bar bar-header bar-stable"> <h1 class="title">Menu</h1> </header> <ion-content class="has-header"> <ion-list> <ion-item nav-clear menu-close href="#/app/home"> Home </ion-item> <ion-item nav-clear menu-close href="#/app/saved"> Saved </ion-item> <ion-item nav-clear menu-close href="#/app/settings"> Settings </ion-item> </ion-list> </ion-content> </ion-side-menu> </ion-side-menus>


Puede establecer nextViewOptions antes de $ state.go (''Yourstate''). Como en tu controlador, puedes escribir,

$ionicHistory.nextViewOptions({ disableBack: true }); $state.go(''app.home'');

Entonces, para esa transición, borrará la pila de historial y establecerá la siguiente vista como raíz de la pila de historial.


Siempre que tenga <ion-nav-back-button></ion-nav-back-button> incluido en <ion-nav-bar> , verá un botón de retroceso de forma predeterminada en cualquier vista que use la app .

Eliminar <ion-nav-back-button> eliminará el botón Atrás de todas las vistas usando la app . Puede deshabilitarlo de forma selectiva en función de la plantilla que esté viendo configurando hide-back-button="true" en la <ion-view> de esa plantilla.

Entonces, en su caso, eliminar <ion-nav-back-button class="button-clear"><i class="icon ion-ios7-arrow-back"></i> Back</ion-nav-back-button> menu.html <ion-nav-back-button class="button-clear"><i class="icon ion-ios7-arrow-back"></i> Back</ion-nav-back-button> de menu.html ocultará el botón de retroceso en todas las vistas usando la app .


También tuve este problema al usar el menú lateral de Ionic.

En algunos casos, al seleccionar una opción del menú lateral, la página / vista resultante mostraba un botón de retroceso en la barra de navegación, que no debería (porque seleccionar una opción de menú debería restablecer el historial).

El problema estaba relacionado con el uso de "ng-click" en la opción del menú, por ejemplo:

<ion-item menu-close ng-click="showStartPage()" ...>

con ''showStartPage'' es un método de controlador que llama a $ state.go (...).

La solución fue codificarlo así:

<ion-item menu-close href="#/startPage" ...>

Cuando se hace así, Ionic es (aparentemente) capaz de realizar un seguimiento adecuado del historial de navegación.

(No lo probé, pero probablemente "ui-sref" en lugar de "href" también funcionaría)


Use $ionicHistory en su controlador antes de llamar a $state.go(''app.home'') .

.controller(''HomeCtrl'', function($scope,...,$ionicHistory) { ... $ionicHistory.nextViewOptions({ disableBack: true }); $state.go(''app.home''); });


$ionicNavBarDelegate.showBackButton(false);