2017-06-29 30 views
1

在我的应用程序中我有3个选项卡。在第一个选项卡中有一个列表推到另一个页面(在同一个选项卡内,因此选项卡保留在最下面)。当我切换到另一个选项卡时,我回到第一个选项卡,我仍然在该子页面。 有没有办法永远去根?问题是在子页面中我也有链接,所以Ionic 2 - How do I get back to the start page of a given tab上的解决方案对我来说并不适用,因为他在我点击打开子页面中的新页面时也将其重定向到了根目录。离子2标签总是回到根页面

其他解决方案?

+0

请发表您的代码,以便它会很容易让我们弄清楚这个问题比单词还好 – Gowtham

+0

我明白了,但你需要什么代码?所有与此有关的页面?我有一个普通的tabpage,并且有3个根。如果我点击第一个根内部(然后我看到孩子),然后切换到另一个标签并返回,我看到孩子。通过我在问题中提供的链接,可以解决这个问题,但是我也有孩子。 有没有办法重置到RootPage? –

+0

为了更好地理解这一点,我建议阅读关于'NavController' [这里](https://ionicframework.com/docs/api/navigation/NavController/)的更多信息,以更好地理解它如何与视图创建。所有这些都在那里解释。 – Sam5487

回答

0

你好,我是不那么合格的,但怎么样弹出的页面推

0

后,我不知道这将是解决这个问题的最好办法,但它应该工作。假设这是一个包含所有标签页:

<ion-tabs> 
    <ion-tab [root]="chatRoot" (ionSelect)="onSelected(0)" tabTitle="First tab"></ion-tab> 
    <ion-tab [root]="chatRoot" (ionSelect)="onSelected(1)" tabTitle="First tab"></ion-tab> 
    <ion-tab [root]="chatRoot" (ionSelect)="onSelected(2)" tabTitle="First tab"></ion-tab> 
</ion-tabs> 

而在组件代码:

import { Events } from 'ionic-angular'; 

// ... 

constructor(public events: Events) {} 

public onSelected(index: number): void { 
    if(index) this.events.publish('TabSelected'); 
} 

因此,基本上,我们当用户选择比第一其它任何标签发布事件标签(索引等于0)。

中FirstTab,我们可以订阅该事件,并使用this.navCtrl.popToRoot()关闭打开的页面内部的标签:

// FirstTabCode 
import { NavController, Events } from 'ionic-angular'; 

// ... 

constructor(public navCtrl: NavController, public events: Events) { 
    this.events.subscribe('TabSelected',() => { this.navCtrl.popToRoot(); }); 
} 

ngOnDestroy() { 
    this.events.unsubscribe('TabSelected'); 
} 
+1

为什么不在'onSelected'函数中设置'setRoot'? – Duannx

+0

因为在'onSelected'方法中,我们在TabsPage中,它包含所有的选项卡。我们需要从其中一个子页面弹出导航堆栈... – sebaferreras