Skip to content

Commit 6b3e2ed

Browse files
committed
fix(nav): popTo() uses the new removeView API
1 parent 16bfb49 commit 6b3e2ed

File tree

1 file changed

+19
-12
lines changed

1 file changed

+19
-12
lines changed

src/navigation/nav-controller-base.ts

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,18 @@ export class NavControllerBase extends Ion implements NavController {
103103
}
104104

105105
popTo(indexOrViewCtrl: any, opts?: NavOptions, done?: Function): Promise<any> {
106-
const startIndex = isViewController(indexOrViewCtrl) ? this.indexOf(indexOrViewCtrl) : isNumber(indexOrViewCtrl) ? indexOrViewCtrl : -1;
107-
return this._queueTrns({
108-
removeStart: startIndex + 1,
106+
let config: TransitionInstruction = {
107+
removeStart: -1,
109108
removeCount: -1,
110-
opts: opts,
111-
}, done);
109+
opts: opts
110+
};
111+
if (isViewController(indexOrViewCtrl)) {
112+
config.removeView = indexOrViewCtrl;
113+
config.removeStart = 1;
114+
} else if (isNumber(indexOrViewCtrl)) {
115+
config.removeStart = indexOrViewCtrl + 1;
116+
}
117+
return this._queueTrns(config, done);
112118
}
113119

114120
popToRoot(opts?: NavOptions, done?: Function): Promise<any> {
@@ -138,6 +144,8 @@ export class NavControllerBase extends Ion implements NavController {
138144
removeView(viewController: ViewController, opts?: NavOptions, done?: Function): Promise<any> {
139145
return this._queueTrns({
140146
removeView: viewController,
147+
removeStart: 0,
148+
removeCount: 1,
141149
opts: opts,
142150
}, done);
143151
}
@@ -295,16 +303,15 @@ export class NavControllerBase extends Ion implements NavController {
295303
const viewsLength = this._views.length;
296304

297305
if (isPresent(ti.removeView)) {
298-
assert(!isPresent(ti.removeStart), 'removeView and removeIndex can not be enabled at the same time');
299-
let index = this._views.indexOf(ti.removeView);
306+
assert(isPresent(ti.removeStart), 'removeView needs removeStart');
307+
assert(isPresent(ti.removeCount), 'removeView needs removeCount');
300308

309+
let index = this._views.indexOf(ti.removeView);
301310
if (index >= 0) {
302-
ti.removeStart = index;
303-
ti.removeCount = 1;
304-
ti.leavingRequiresTransition = ((ti.removeStart + ti.removeCount) === viewsLength);
311+
ti.removeStart += index;
305312
}
306-
307-
} else if (isPresent(ti.removeStart)) {
313+
}
314+
if (isPresent(ti.removeStart)) {
308315
if (ti.removeStart < 0) {
309316
ti.removeStart = (viewsLength - 1);
310317
}

0 commit comments

Comments
 (0)