web-dev-qa-db-ja.com

$ ionicView.enterとcache:falseの違いは何ですか

ビューを開くたびにWebサービスの複数のメソッドを呼び出す必要があるビューを開発しています。$scope.$on('$ionicView.enter', function(){...})またはcache:falseを使用する必要がありますか?

それぞれの本当の違いは何ですか?

10
Felipe

私はこのQ&Aを本当に楽しんだ:

i.routerがコントローラーをリロードしていません

Bipin Bhandari は、ionicキャッシングメカニズム)で使用できるオプションを適切に要約しています。

  1. _cache: false_によるキャッシュを回避します。
  2. $ionicConfigProvider.views.maxCache(0)でキャッシュを無効にします。
  3. または、キャッシュをそのままにして、コントローラーを1回だけ実行させます...これらの間にいくつかのスマートなことを実行している間 ライフサイクルとイベントの表示

したがって、キャッシュが設定されていると、コントローラーは1回だけ実行されます。

ビューは、パフォーマンスを向上させるためにキャッシュされます。ビューが離れてナビゲートされると、その要素はDOMに残され、そのスコープは$ watchサイクルから切断されます。すでにキャッシュされているビューに移動すると、そのスコープが再接続され、DOMに残っていた既存の要素が再びアクティブになります。

これらのイベントをフックすることができます...このコントローラーで「常に何か」を行うために

13
Radim Köhler

$ionicView.enterは、選択したビューがアクティブ化されるたびにブロードキャストされるイベントです。

cache:falseは、ページがキャッシュされないため、毎回完全にリロードされることを意味します。

私は個人的にキャッシュfalseを使用しないようにしています。これはパフォーマンスが悪いためですが、コントローラーに戻ったときにコントローラーが再度初期化されないため、副作用があります。

代わりに、ビューに入ると、ユーザー$ionicView.enterまたは$ionicView.afterEnterページのいくつかのアクションをトリガーして、読み込みを完全に完了します。

9
aorfevre