From d84d8a647106ba1e23a9fc9e065716ab068340a8 Mon Sep 17 00:00:00 2001 From: "Manu Mtz.-Almeida" Date: Wed, 19 Oct 2016 01:14:27 +0200 Subject: [PATCH] fix(tabs): regression in nav-controller-base --- src/components/item/test/sliding/main.html | 2 +- src/navigation/nav-controller-base.ts | 20 +++++++++++--------- src/util/util.ts | 4 +++- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/components/item/test/sliding/main.html b/src/components/item/test/sliding/main.html index 1ed5491b59..b5a3977b47 100644 --- a/src/components/item/test/sliding/main.html +++ b/src/components/item/test/sliding/main.html @@ -31,7 +31,7 @@ - diff --git a/src/navigation/nav-controller-base.ts b/src/navigation/nav-controller-base.ts index 3ff8af93a1..510772ff08 100644 --- a/src/navigation/nav-controller-base.ts +++ b/src/navigation/nav-controller-base.ts @@ -521,6 +521,14 @@ export class NavControllerBase extends Ion implements NavController { this._sbTrns = transition; } + // transition start has to be registered before attaching the view to the DOM! + transition.registerStart(() => { + this._trnsStart(transition, enteringView, leavingView, opts, resolve); + if (transition.parent) { + transition.parent.start(); + } + }); + if (enteringView && enteringView._state === ViewState.INITIALIZED) { // render the entering component in the DOM // this would also render new child navs/views @@ -531,13 +539,6 @@ export class NavControllerBase extends Ion implements NavController { console.debug('enteringView state is not INITIALIZED', enteringView); } - transition.registerStart(() => { - this._trnsStart(transition, enteringView, leavingView, opts, resolve); - if (transition.parent) { - transition.parent.start(); - } - }); - if (!transition.hasChildren) { // lowest level transition, so kick it off and let it bubble up to start all of them transition.start(); @@ -633,8 +634,9 @@ export class NavControllerBase extends Ion implements NavController { // mainly for testing let enteringName: string; let leavingName: string; + let hasCompleted = transition.hasCompleted; - if (transition.hasCompleted) { + if (hasCompleted) { // transition has completed (went from 0 to 1) if (transition.enteringView) { enteringName = transition.enteringView.name; @@ -671,7 +673,7 @@ export class NavControllerBase extends Ion implements NavController { } // congrats, we did it! - resolve(transition.hasCompleted, true, enteringName, leavingName, opts.direction); + resolve(hasCompleted, true, enteringName, leavingName, opts.direction); } _insertViewAt(view: ViewController, index: number) { diff --git a/src/util/util.ts b/src/util/util.ts index 7914afe46f..433c8bf730 100644 --- a/src/util/util.ts +++ b/src/util/util.ts @@ -156,11 +156,13 @@ export function reorderArray(array: any[], indexes: {from: number, to: number}): return array; } + +const ASSERT_ENABLED = true; /** * @private */ function _assert(actual: any, reason?: string) { - if (!actual) { + if (!actual && ASSERT_ENABLED === true) { let message = 'IONIC ASSERT: ' + reason; console.error(message); throw new Error(message);