2015-10-01 15 views
0

我試圖在從http://www.gajotres.net/handling-native-view-animations-with-ionic-framework/閱讀完美教程後實現本機頁面轉換到我的Ionic項目。離子檢測「返回」以獲得更好的本地頁面轉換

但是,我發現有時在頁面轉換完成後頁面被更改的問題。這意味着,它將動畫從頁面A到頁面A的轉換。然後,頁面A變成頁面B.文章和插件提供的解決方案是估計在動畫開始之前設置延遲。但這種做法並不可靠。

於是,我想到的不是使用延遲,而是適用於進入該頁面,該動畫:

$scope.$on('$ionicView.enter', function (event, viewData) { 
    window.plugins.nativepagetransitions.slide({ 
      "direction": "left" 
     }); 
}); 

它的偉大工程導航時,其他頁面,這個頁面。但是從其他頁面導航回頁面時會出現動畫問題。

我怎樣才能知道用戶是回到這個頁面,以便我可以執行不同的動畫方向?

回答

3

當您攔截$ionicView.enter事件時,您可以檢查動畫的方向。回調函數接收2個參數。第二個給你的信息,所以你可以做這樣的事情:

$scope.$on('$ionicView.enter', function (event, viewData) { 
    var transitionDirection = viewData.direction !== "back" ? "left": "right"; 
    window.plugins.nativepagetransitions.slide({ 
     "direction": transitionDirection 
    }); 
}); 

第二個參數viewData有一個屬性direction與動畫的方向:backforward

離開視圖時,可以做同樣的事情:

$scope.$on("$ionicView.leave", function(event, viewData){ 
    var transitionDirection = viewData.direction !== "back" ? "left": "right"; 
    window.plugins.nativepagetransitions.slide({ 
     "direction": transitionDirection 
    }); 
}); 

有一堆其他events你可以使用:

  • $ ionicView.enter
  • $ ionicView.leave
  • $ ionicView.beforeEnter
  • $ ionicView.beforeLeave
  • $ ionicView.afterEnter
  • $ ionicView.afterLeave
  • $ ionicView.loaded
  • $ ionicView.unloaded
+0

您的解決方案是真棒COOL。我正在研究我的解決方案,使其工作。你的解決方案好得多!無論如何,是否有任何全球'$ ionicView.enter'的東西,所以我可以把它放一次,它會在每一頁上工作? – user1995781

+0

恐怕不是。你可以在'$ rootScope'中使用'$ stateChangeSuccess'事件,但是我想你必須檢查哪一個狀態會發生在哪裏:'$ rootScope。$ on('$ stateChangeSuccess',function(event,toState,toParams,fromState ,fromParams){});' – LeftyX

+0

非常感謝您的回覆。有一件事我不知道。好像我們在'$ ionicView.enter'上爲它設置動畫,爲什麼有時候我仍然看到同一個頁面被生成動畫,只有當頁面被更改?有什麼辦法可以完全避免它發生? – user1995781

相關問題