diff --git a/ionic/components/nav/nav-controller.ts b/ionic/components/nav/nav-controller.ts index 490a541d37..0af8b95f3b 100644 --- a/ionic/components/nav/nav-controller.ts +++ b/ionic/components/nav/nav-controller.ts @@ -146,7 +146,7 @@ export class NavController extends Ion { * @param {TODO} [opts={}] TODO * @returns {Promise} TODO */ - push(componentType, params = {}, opts = {}) { + push(componentType, params = {}, opts = {}, callback) { if (!componentType) { console.debug('invalid componentType to push'); return Promise.reject(); @@ -164,7 +164,10 @@ export class NavController extends Ion { this._lastPush = now; let resolve; - let promise = new Promise(res => { resolve = res; }); + let promise = null; + if (!callback) { + promise = new Promise(res => { callback = res; }); + } // do not animate if this is the first in the stack if (!this._views.length && !opts.animateFirst) { @@ -202,7 +205,7 @@ export class NavController extends Ion { } // start the transition - this._transition(enteringView, leavingView, opts, resolve); + this._transition(enteringView, leavingView, opts, callback); return promise; } @@ -579,9 +582,9 @@ export class NavController extends Ion { let navbarTemplateRef = viewCtrl.getNavbarTemplateRef(); if (navbarContainerRef && navbarTemplateRef) { - console.time('loadPage ' + viewCtrl.componentType.name + ': createEmbeddedView'); + console.time('loadPage ' + viewCtrl.componentType.name + ': create navbar'); let navbarView = navbarContainerRef.createEmbeddedView(navbarTemplateRef); - console.timeEnd('loadPage ' + viewCtrl.componentType.name + ': createEmbeddedView'); + console.timeEnd('loadPage ' + viewCtrl.componentType.name + ': create navbar'); viewCtrl.addDestroy(() => { let index = navbarContainerRef.indexOf(navbarView); diff --git a/ionic/components/tabs/tab.ts b/ionic/components/tabs/tab.ts index e3824d3ee0..d9f5bb676f 100644 --- a/ionic/components/tabs/tab.ts +++ b/ionic/components/tabs/tab.ts @@ -114,7 +114,7 @@ export class Tab extends NavController { */ load(opts, done) { if (!this._loaded && this.root) { - this.push(this.root, null, opts).then(done); + this.push(this.root, null, opts, done); this._loaded = true; } else {