Quelle est la différence entre $ ionicView.enter et cache: false

Je développe une vue qui nécessite des méthodes multiples d'appel d'un service Web chaque fois que la vue est ouverte, puis-je utiliser $scope.$on('$ionicView.enter', function(){...}) ou cache:false ?

Quelle est la différence réelle entre chacun d'eux?

J'ai vraiment apprécié cette Q & A:

Ui.router ne pas recharger le contrôleur

Où le Bipin Bhandari résume bien les options que nous avons avec un mécanisme de mise en cache ionique

  1. Éviter la mise en cache: false par cache: false ,
  2. Désactivez la mise en cache avec $ionicConfigProvider.views.maxCache(0) ;
  3. Ou conservez la mise en cache telle quelle, et laissez le contrôleur être exécuté une seule fois … tout en faisant des trucs intelligents pendant ces LifeCycle et événements

Ainsi, avec la mise en cache en place, le contrôleur sera exécuté une seule fois:

Les vues sont mises en cache pour améliorer les performances. Lorsqu'une vue est parcourue, son élément est laissé dans le DOM et sa portée est déconnectée du cycle $ watch. Lorsque vous naviguez vers une vue qui est déjà mise en cache, sa portée est reconectée et l'élément existant, laissé dans le DOM, devient actif à nouveau.

Nous pouvons vous connecter à ces événements … pour faire des "choses toujours" avec ce contrôleur

$ionicView.enter est un événement qui est diffusé chaque fois que la vue sélectionnée est activée.

cache:false signifie que la page ne sera jamais mise en cache, et est donc complètement rechargée à chaque fois.

Je tente personnellement d'éviter d'utiliser le cache faux car il est une mauvaise performance mais a des effets secondaires car votre contrôleur ne sera pas initialisé à nouveau lorsque vous y retournez.

Au lieu de cela, lorsque j'entre dans une vue, j'utilise $ionicView.enter ou $ionicView.afterEnter pour déclencher plusieurs actions pour que la page termine complètement le chargement.