我有一個離子3頁需要,如果它是從navCtrl.setRoot()
進入但如果該頁面被通過navCtrl.pop()
回到刷新頁面的數據。我使用ionViewDidEnter()
正在進入頁面時檢測,但不能制定出如何從pop()
從setRoot()
進入和進入區分。離子ionViewDidEnter能檢測pop vs setRoot嗎?
我的項目是標籤項目,因此setRoot()
來每次選擇頁面的選項卡時間。
我有一個離子3頁需要,如果它是從navCtrl.setRoot()
進入但如果該頁面被通過navCtrl.pop()
回到刷新頁面的數據。我使用ionViewDidEnter()
正在進入頁面時檢測,但不能制定出如何從pop()
從setRoot()
進入和進入區分。離子ionViewDidEnter能檢測pop vs setRoot嗎?
我的項目是標籤項目,因此setRoot()
來每次選擇頁面的選項卡時間。
更新:
您需要使用Events here.You需要Override
back 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
頁。
我正在使用Tabs項目。每次通過Tab選擇頁面我想重新加載數據,但每次頁面通過彈出(後退)輸入時,我只想顯示以前的頁面狀態。 –
不過,你可以使用上面提到的'events' no?任何問題? – Sampath
也許我不理解? ionViewDidLoad()僅在第一次通過Tab鍵啓動頁面時運行。隨後的每一次我只能得到ionViewDidEnter(),所以我不能通過單擊後退按鈕來區分Tab setRoot和Pop。 –