fix(tabs): regression in nav-controller-base

This commit is contained in:
Manu Mtz.-Almeida
2016-10-19 01:14:27 +02:00
parent 5ad4c542be
commit d84d8a6471
3 changed files with 15 additions and 11 deletions

View File

@ -31,7 +31,7 @@
</a> </a>
<ion-item-options side="left"> <ion-item-options side="left">
<button ion-button icon-only (click)="noclose(item100)"> <button ion-button (click)="noclose(item100)">
No close No close
</button> </button>
</ion-item-options> </ion-item-options>

View File

@ -521,6 +521,14 @@ export class NavControllerBase extends Ion implements NavController {
this._sbTrns = transition; 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) { if (enteringView && enteringView._state === ViewState.INITIALIZED) {
// render the entering component in the DOM // render the entering component in the DOM
// this would also render new child navs/views // 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); 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) { if (!transition.hasChildren) {
// lowest level transition, so kick it off and let it bubble up to start all of them // lowest level transition, so kick it off and let it bubble up to start all of them
transition.start(); transition.start();
@ -633,8 +634,9 @@ export class NavControllerBase extends Ion implements NavController {
// mainly for testing // mainly for testing
let enteringName: string; let enteringName: string;
let leavingName: string; let leavingName: string;
let hasCompleted = transition.hasCompleted;
if (transition.hasCompleted) { if (hasCompleted) {
// transition has completed (went from 0 to 1) // transition has completed (went from 0 to 1)
if (transition.enteringView) { if (transition.enteringView) {
enteringName = transition.enteringView.name; enteringName = transition.enteringView.name;
@ -671,7 +673,7 @@ export class NavControllerBase extends Ion implements NavController {
} }
// congrats, we did it! // congrats, we did it!
resolve(transition.hasCompleted, true, enteringName, leavingName, opts.direction); resolve(hasCompleted, true, enteringName, leavingName, opts.direction);
} }
_insertViewAt(view: ViewController, index: number) { _insertViewAt(view: ViewController, index: number) {

View File

@ -156,11 +156,13 @@ export function reorderArray(array: any[], indexes: {from: number, to: number}):
return array; return array;
} }
const ASSERT_ENABLED = true;
/** /**
* @private * @private
*/ */
function _assert(actual: any, reason?: string) { function _assert(actual: any, reason?: string) {
if (!actual) { if (!actual && ASSERT_ENABLED === true) {
let message = 'IONIC ASSERT: ' + reason; let message = 'IONIC ASSERT: ' + reason;
console.error(message); console.error(message);
throw new Error(message); throw new Error(message);