當我們來回切換頁面時候,視圖被緩存下來,不用每次再去new一個新的視圖,可以大大地提高性能。當跳出一個視圖後,視圖的元素被保存在DOM中,它的作用域也就不在$watch的作用域內,當我們訪問一個已經被緩存的視圖後,它的scope重新回到作用域內,同時留在DOM中的元素也被激活。
視圖可以被緩存,也就意味著Controllers只需要加載一次,這必然會影響到controller的邏輯,去區別一個視圖是否已經訪問或者離開,事件是否已經被添加來調用視圖的作用域,這些事件也包含視圖的數據,比如標題和返回按鈕是不是應該顯示。也包含轉換數據,比如動畫的轉換類型和方向將被使用或已經被使用的。
1.$ ionicView.loaded 視圖已經被加載了,這個事件只發生一次,視圖被創建並且被添加到DOM中,當視圖跳出後並被緩存的話,再次訪問這個視圖這個事件將不會被激活。Loaded事件是個好方式讓你為這個視圖設置你的代碼; 然而,他並不是我們推薦的事件去監聽視圖被激活。
2.$ ionicView.enter 進入視圖並被激活。這事件被激活來判斷這個視圖是第一個加載還是被緩存了的。
3.$ ionicView.leave 離開這個視圖並且不是活動頁面。調用這個事件判斷應該被緩存還是摧毀。
4.$ionicView.beforeEnter 視圖是即將進入並成為活動視圖。
5.$ionicView.beforeLeave 視圖將被關閉並且不是活動頁面。
6.$ionicView.afterEnter 進入視圖並是當前的活動頁面
7.$ionicView.afterLeave 已經離開視圖,並成為非激活頁面
8.$ionicView.unloaded 視圖的Controller已經被摧毀並且他的頁面元素也從Dom中移除