3

我正在使用导航控制器。要返回,我可以使用 nav.pop(),但是如果我需要转到另一个页面(不是最后一个页面),如何使用 nav.popTo()?

constructor(nav: NavController) {
this.nav = nav;

this.nav.push(MyNextPage);
4

7 回答 7

10

这是上两层的代码,即上一页的父页。

this.navCtrl.popTo(this.navCtrl.getByIndex(this.navCtrl.length()-3));

弹出到根页面。

this.navCtrl.popToRoot();
于 2017-08-23T14:36:16.410 回答
4

您可以获取索引this.navCtrl.getByIndex(int i)并将其设置在内部popTo(),请参见下面的代码:

this.navCtrl.popTo( this.navCtrl.getByIndex(1));

通过这个例子,你可以弹出两个页面

于 2017-02-24T14:48:48.543 回答
2

如果你延迟加载,你需要这样的东西:

let targetView = this._navCtrl.getViews().filter(view=> view.id == 'MyAwesomePage')
targetView.length ? this._navCtrl.popTo(targetView[0]) : this._navCtrl.pop()

请注意,您可以使用 pop() 以外的其他方法处理 off 情况

如果您想更多地控制要转到哪个视图实例,可以尝试以下操作:

let index: number;
let views: any[] = this._navCtrl.getViews()
let found: boolean = views.some((view, i) =>{
  index = i
  return (view.id == 'MyAwesomePage')
})
found ? this.navCtrl.popTo(views[index]) : this._navCtrl.pop()

您可以 getViews().reverse().filter() 或 views.reverse().some() 来获取最后一次出现。

这是使用 ES5 中的 Ionic 3 和 Array.some()

于 2018-02-06T16:08:45.177 回答
0

已经很晚了,但是对于想要它的人,请参阅https://github.com/ionic-team/ionic/blob/master/src/navigation/nav-controller.ts链接。

abstract popTo(page: Page | string | ViewController, opts?: NavOptions, done?: TransitionDoneFn): Promise<any>;

所以你可以使用 popTo('pagename' or PageName or index) 和选项。

于 2017-09-14T08:24:50.843 回答
0

nav.popTo()用于退回页面层次结构中的几个级别。

例如,如果您的页面层次结构是login -> welcome -> article1 -> detail1,您可能会使用以下内容:

constructor(nav: NavController) {
this.nav = nav;

this.nav.popTo(MyWelcomePage);

返回您的欢迎页面。有关更多导航方法和详细信息,请参阅文档:http: //ionicframework.com/docs/v2/api/components/nav/NavController/#popTo

于 2016-02-04T13:30:22.537 回答
0

为什么不只使用 Ionic 的nav.setRoot(@component)

以上面的例子,你可以很容易地做到

nav.push(welcome) -> nav.push(article1) -> nav.push(detail1)

并返回欢迎页面,只需简单nav.setRoot(welcomePage)

编辑:我认为这会重置堆栈。

于 2016-05-06T16:16:19.433 回答
0

ionic 2 popTo() 存在问题。Ionic Team 有望修复它。

请参阅下面的链接: https ://forum.ionicframework.com/t/viewcontroller-and-popto-ionic-2/53704

https://github.com/driftyco/ionic/issues/6513

于 2016-06-05T14:10:24.280 回答