我正在使用NavController。要回去,我可以使用nav.pop(),但如果我需要去另一個頁面(而不是最後一個),如何使用nav.popTo()?如何使用nav.popTo()(離子2)?
constructor(nav: NavController) {
this.nav = nav;
this.nav.push(MyNextPage);
我正在使用NavController。要回去,我可以使用nav.pop(),但如果我需要去另一個頁面(而不是最後一個),如何使用nav.popTo()?如何使用nav.popTo()(離子2)?
constructor(nav: NavController) {
this.nav = nav;
this.nav.push(MyNextPage);
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
爲什麼不只是使用Ionic的nav.setRoot(@component)
?
以上面的例子中,你可以很容易地做到
nav.push(welcome) -> nav.push(article1) -> nav.push(detail1)
,並回到歡迎頁面,只需簡單地nav.setRoot(welcomePage)
編輯:我覺得這把堆棧復位。
離子2 popTo()有問題。 Ionic團隊有望修復它。
參見以下鏈接: https://forum.ionicframework.com/t/viewcontroller-and-popto-ionic-2/53704
你肥大獲得指數this.navCtrl.getByIndex(int i)
並設置了popTo()
裏面,看到波紋管代碼:
this.navCtrl.popTo(this.navCtrl.getByIndex(1));
這個例子,可以彈出兩頁
Thankyou .. this.navCtrl.getByIndex(int i)在Ionic 3中工作。以前在Ionic 2中,我使用this.navCtrl.popTo(0),當我升級到Ionic 3時它停止工作。 –
這裏是代碼去兩個級別s,也就是上一頁的父頁面。
this.navCtrl.popTo(this.navCtrl.getByIndex(this.navCtrl.length()-3));
彈出到根頁面。
this.navCtrl.popToRoot();
我無法在文檔中找到popTo:https://ionicframework.com/ docs/api/navigation/NavController/ – Luckylooke
對於他們的文檔而言,它已經黑了。 LMAO! :( –
現在已經晚了,但人誰想要它,看到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)以及選項。
如果你懶加載你需要這樣的事:
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
喜用離子3和Array.some(),您可以顯示如何以檢索該'MyWelcomePage'看法?我不知道如何檢索我想要的視圖。 –
您的MyWelcomePage需要是ViewController類型,它通過NavParams傳遞到您的detail1頁面,從歡迎頁 –
一直到文檔的鏈接似乎不再是實際了:/ – Luckylooke