2016-01-22 45 views
2

我正在使用NavController。要回去,我可以使用nav.pop(),但如果我需要去另一個頁面(而不是最後一個),如何使用nav.popTo()?如何使用nav.popTo()(離子2)?

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

this.nav.push(MyNextPage); 

回答

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

+0

喜用離子3和Array.some(),您可以顯示如何以檢索該'MyWelcomePage'看法?我不知道如何檢索我想要的視圖。 –

+0

您的MyWelcomePage需要是ViewController類型,它通過NavParams傳遞到您的detail1頁面,從歡迎頁 –

+1

一直到文檔的鏈接似乎不再是實際了:/ – Luckylooke

0

爲什麼不只是使用Ionic的nav.setRoot(@component)

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

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

,並回到歡迎頁面,只需簡單地nav.setRoot(welcomePage)

編輯:我覺得這把堆棧復位。

3

你肥大獲得指數this.navCtrl.getByIndex(int i)並設置了popTo()裏面,看到波紋管代碼:

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

這個例子,可以彈出兩頁

+0

Thankyou .. this.navCtrl.getByIndex(int i)在Ionic 3中工作。以前在Ionic 2中,我使用this.navCtrl.popTo(0),當我升級到Ionic 3時它停止工作。 –

4

這裏是代碼去兩個級別s,也就是上一頁的父頁面。

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

彈出到根頁面。

this.navCtrl.popToRoot(); 
+1

我無法在文檔中找到popTo:https://ionicframework.com/ docs/api/navigation/NavController/ – Luckylooke

+0

對於他們的文檔而言,它已經黑了。 LMAO! :( –

0

如果你懶加載你需要這樣的事:

let targetView = this._navCtrl.getViews().filter(view=> view.id == 'MyAwesomePage') 
targetView.length ? this._navCtrl.popTo(targetView[0]) : this._navCtrl.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() 

你可能會得到Views()。reverse()。filter()或views.reverse()。some()得到最後的出現。

這是ES5