如何使用nav.popTo()(离子2)?

时间:2016-01-22 13:09:11

标签: javascript ionic-framework angular ionic2

我正在使用NavController。要回去,我可以使用nav.pop(),但如果我需要转到另一页(不是最后一页),如何使用nav.popTo()?

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

this.nav.push(MyNextPage);

7 个答案:

答案 0 :(得分:10)

这是两个级别的代码,即上一页的父页面。

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

弹出到根页面。

this.navCtrl.popToRoot();

答案 1 :(得分:4)

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

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

使用此示例,您可以弹出两个页面

答案 2 :(得分:2)

如果你懒得加载,你需要这样的东西:

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

请注意,您可以使用pop()

以外的其他方式处理关闭案例

如果您想要更多地控制要访问的视图实例,可以尝试这样的操作:

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()

答案 3 :(得分: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

答案 4 :(得分:0)

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

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

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

然后返回欢迎页面,只需nav.setRoot(welcomePage)

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

答案 5 :(得分:0)

离子2 popTo()存在问题。预计Ionic团队将解决这个问题。

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

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

答案 6 :(得分: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'或PageName或index)以及选项。