GoBack的與導航之間的主要區別是,GoBack的只是回到了導航歷史堆棧,並起到相同的,如果這個人打了「後退」按鈕(Android)或揮筆向右(iOS版)。導航前進,並添加一個新的堆棧條目,您可以goBack
。
讓我們看兩個例子:
所以,如果我開始第一頁上,並導航到第二頁,然後導航到第3頁,則用戶打我的「<後退」按鈕,然後在我的代碼,然後導航到第一頁,我導航堆棧應該是這樣的: Page1 Page2 Page3 Page1
如果我再使用硬件後退按鈕(觸發)goBack
這將是第3頁,第二頁,然後,然後第1頁。用戶可能不希望在Page1上點擊後退按鈕將它們放在Page3上而不是退出。所以除非你想要一個奇怪的導航;這通常會被認爲是意外/破壞的行爲。
在適當的導航我可能做到這一點: Page1 Page2 (Not stored in History: used "backstackVisible: false") Page3
然後從第3頁一Back
實際上把我在第一頁,並從第1 Back
會退出應用程序。這將是預期的行爲。
現在,作爲該事件。 此頁面的事件是NavigatingTo,Loaded,NavigatedTo - 它們按此順序觸發。
被調用的加載事件不是一個bug;它是通過設計;當頁面組件被加載時 - 它允許你能夠設置頁面元素。所有組件都有一個「加載」事件。所以這是一個組件級別的事件而不是頁面導航類型的事件。舉例來說,我之前做過: <Switch android:loaded="fixAndroidSwitch"/>
然後我的fixAndroidSwitch
例程在交換機上固定了一些東西。
的NavigatingTo和NavigatedTo是實際的導航事件,並且他們也有作爲參數的一部分傳遞一個值: function onNavigatingTo(context) { if (context.isBackNavigation) { /* Do whatever */ } }
有關頁面事件的更多信息;你可以閱讀我的博客文章http://fluentreports.com/blog/?p=191,並解釋更多
是isBack參數記錄在任何地方。我正在使用goBack()導航回頁面,但它仍然未定義。 – dashman
對不起,isBack在內部使用 - 我有時會忘記我正在處理的是哪一部分。 LOL - 通過onNavigatedTo傳遞的參數,onNavigatingTo具有「isBackNavigation」值。 (對或錯) – Nathanael