2017-10-13 67 views
1

我有一個離子3頁需要,如果它是從navCtrl.setRoot()進入但如果該頁面被通過navCtrl.pop()回到刷新頁面的數據。我使用ionViewDidEnter()正在進入頁面時檢測,但不能制定出如何從pop()setRoot()進入和進入區分。離子ionViewDidEnter能檢測pop vs setRoot嗎?

我的項目是標籤項目,因此setRoot()來每次選擇頁面的選項卡時間。

回答

1

更新:

您需要使用Events here.You需要Overrideback button事件,如下圖所示。

.TS

@ViewChild(Navbar) navBar: Navbar; 

ionViewDidLoad() { 
    this.navBar.backButtonClick = (e: UIEvent) => {//override back button 
     this.events.publish(Handlers.NEW_PROJECT_PAGE_BUDGET_HANDLER, this.data); 
     this.navCtrl.pop(); 
    } 
    } 

老答案:

navCtrl.setRoot()意味着它推向一個新的頁面的導航堆棧。因此,您可以使用頁面的constructor()ionViewDidLoad() - This event only happens once per page being created

navCtrl.pop()意味着你只能使用ionViewDidEnter() - Runs when the page has fully entered and is now the active page. This event will fire, whether it was the first load or a cached page.來檢測(或火)它,因爲它使用the cached頁。

+0

我正在使用Tabs項目。每次通過Tab選擇頁面我想重新加載數據,但每次頁面通過彈出(後退)輸入時,我只想顯示以前的頁面狀態。 –

+0

不過,你可以使用上面提到的'events' no?任何問題? – Sampath

+0

也許我不理解? ionViewDidLoad()僅在第一次通過Tab鍵啓動頁面時運行。隨後的每一次我只能得到ionViewDidEnter(),所以我不能通過單擊後退按鈕來區分Tab setRoot和Pop。 –