Skip to content

Hardware back button different action than ion-nav-buttons #145

@fgagneten

Description

@fgagneten

On click hardware back button in an specific view I get:

[INFO:CONSOLE(11706)] "[native transition] same state transition are not possible", source: file:///android_asset/www/bower_components/angular/angular.js (11706)

What is weird that if I click in the same view the ion-nav-buttons back button, works perfectly.

I have 3 view, the view what I'm talking about is view 2.
If I go from view 1 to view 2 and then click on hardware back button goes again to view 1 thats perfect.

The problem is if I go to view 2 from view 1, then I go to view 3 and after that I click back button (or ion-nav-bar) in view 3 I go back to view 2. There is the problem when I click only hardware back button on view 2 after go back from view 3.

To sum up:

  • View1 -> state.go(view2) -> View2 -> state.go(view1) -> View 1✔

  • View1 -> state.go(view2) -> View2 -> state.go(view3) -> View 3 -> state.go(view2) -> View 2 state.go(view1) with hardware back button -> "[native transition] same state transition are not possible"❌

This is my code:

HTML

<ion-view view-title="Title">
    <ion-nav-buttons side="left">
        <a class="button button-icon ion-android-arrow-back" ng-click="vm.volver()"></a>   
    </ion-nav-buttons>
    <ion-content> 
         ...
         ...
    </ion-content>

CONTROLLER:

(function() {
	'use strict';

	angular
		.module('package.complex')
		.controller('ComplexController', ComplexController);

	ComplexController.$inject = ['$state', 'complexService','$rootScope', '$ionicModal', '$ionicPlatform', '$ionicNativeTransitions'];

	function ComplexController($state, complexService,$rootScope, $ionicModal, $ionicPlatform, $ionicNativeTransitions) {
		var vm = this;
		vm.volver = volver;
	
		$ionicPlatform.registerBackButtonAction(function () {
			console.log("back button was clicked");
			volver();
		}, 100)

                    function volver() {
			console.log("method was called");
			$ionicNativeTransitions.stateGo('home', {session: 1}, {}, {
				"type": "slide",
				"direction": "right", // 'left|right|up|down', default 'left' (which is like 'next')
				"duration": 500, // in milliseconds (ms), default 400
			});
		};

MODULE

(function() {
	'use strict';

	angular
		.module('package.complex', [
			'ionic',
			'ngCordova'
		])
		.config(function($stateProvider) {
			$stateProvider
				.state('complexes', {
					url: '/usuario/complexes',
					templateUrl: 'scripts/package/complex/complex.html',
					controller: 'ComplexController as vm'
				});
		});
})();

Another thing: if I set in my module:

cache:false

Hard back button and ion-nav-buttons works perfectly. Sound weird?

Also, you can see a few logs there, well, on click hardware back button neither of them was called. Just when I click on ion-nav-buttons

Please, Someone can help me? I need to solve the problem ASAP.

EDIT: On hardware back button click, the state to go is the current state, so the script is not taking into account the new state that I'm sending.

Thanks

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions