2017-06-29 29 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