feat(rootNav): create rootNav property on NavController/Tabs

#714
This commit is contained in:
Adam Bradley
2015-12-10 07:35:25 -06:00
parent f520a6319c
commit 5793716b67
3 changed files with 31 additions and 9 deletions

View File

@@ -441,7 +441,7 @@ export class NavController extends Ion {
viewCtrl.shouldDestroy = false;
viewCtrl.shouldCache = false;
this._incrementId(viewCtrl);
this._incId(viewCtrl);
this._views.splice(index, 0, viewCtrl);
this._cleanup();
@@ -1271,14 +1271,14 @@ export class NavController extends Ion {
* @private
*/
_add(viewCtrl) {
this._incrementId(viewCtrl);
this._incId(viewCtrl);
this._views.push(viewCtrl);
}
/**
* @private
*/
_incrementId(viewCtrl) {
_incId(viewCtrl) {
viewCtrl.id = this.id + '-' + (++this._ids);
}
@@ -1435,12 +1435,23 @@ export class NavController extends Ion {
/**
* @private
* IS RETURNING UNDEFIND
* @param {TODO} view TODO
* @returns {TODO} TODO
* @returns {boolean}
*/
isActive(viewCtrl) {
return (viewCtrl && viewCtrl.state === ACTIVE_STATE);
return !!(viewCtrl && viewCtrl.state === ACTIVE_STATE);
}
/**
* Returns the root NavController.
* @returns {NavController}
*/
get rootNav() {
let nav = this;
while (nav.parent) {
nav = nav.parent;
}
return nav;
}
/**

View File

@@ -246,6 +246,19 @@ export class Tabs extends Ion {
return Promise.resolve();
}
/**
* Returns the root NavController. Returns `null` if Tabs is not
* within a NavController.
* @returns {NavController}
*/
get rootNav() {
let nav = this.parent;
while (nav.parent) {
nav = nav.parent;
}
return nav;
}
}
let tabIds = -1;

View File

@@ -73,9 +73,7 @@ class Tab1Page1 {
}
logout() {
let tabs = this.nav.parent;
let rootNav = tabs.parent;
rootNav.setRoot(SignIn, null, { animate: true, direction: 'back' });
this.nav.rootNav.setRoot(SignIn, null, { animate: true, direction: 'back' });
}
}