En exécutant ionic g page pageName
, Je reçois des fichiers .ts, .css et .html générés.
Dans le fichier .ts, j'ai une fonction appelée ionViewDidLoad(){}
et cela s'imprime avant que ma vue n'apparaisse.
Cela peut être fait dans le constructeur lui-même, je crois?
Quelqu'un peut-il me donner une référence à un blog ou une explication sur cette fonction?
Vous avez raison, beaucoup de choses pourraient être faites à la fois dans le constructeur ou dans le ionViewDidLoad
et le résultat sera le même ...
Mais la principale différence entre le constructor
et le ionViewDidLoad
est que la constructor
ne sera exécutée qu'une seule fois (lorsque le composant sera instancié) mais la méthode ionViewDidLoad
sera exécutée à chaque fois la vue est entrée (chargée).
Par exemple, si vous souhaitez charger des données à partir d'une source de données distante, si vous le faites dans le constructeur, les données ne seront obtenues qu'une seule fois. Si ces données pouvaient changer assez rapidement, une meilleure approche serait de les obtenir dans la méthode ionViewDidLoad
, pour être sûr que chaque fois que la page est chargée, les dernières données sont obtenues et affichées dans la vue.
Un autre fait important sur le c'est que parfois vous voulez interagir avec le DOM (peut-être pour initialiser une carte).ionViewDidLoad
Dans ce cas, si vous essayez d'accéder au DOM dans le constructeur, vous remarquerez que le DOM n'est pas prêt à ce stade et vous ne pourrez pas obtenir l'élément de carte. L'approche correcte pour le faire serait à l'intérieur du ionViewDidLoad
car à ce stade (comme le nom l'indique) la vue était déjà chargée et le DOM est maintenant disponible.
MISE À JOUR:
Tout comme @graphefruit l'a souligné dans le commentaire ci-dessous, dans les dernières versions de Ionic 2, ionViewDidLoad
ne se déclenche que si la page n'est pas ionViewWillEnter
ou ionViewDidEnter
sera déclenché chaque fois que la page sera saisie .
constructor
est appelé avant tout, une fois par instanciation de la page, ici vous pouvez faire une initialisation qui ne fait pas référence au HTML DOM
ionViewDidLoad
est appelé lorsque la page DOM a été chargée, avant que la page ne soit affichée, également une seule fois par instanciation de page, ici vous pouvez faire l'initialisation qui nécessite que le DOM HTML soit prêt
ionViewWillEnter
est appelé juste avant l'affichage de la page, peut-être plusieurs fois si la page passe en arrière-plan et revient, ici vous pouvez actualiser les données si elles peuvent être modifiées dans une autre page
ionViewDidEnter
est le même mais appelé juste après l'affichage de la page, peut-être plusieurs fois si la page passe en arrière-plan et revient, par exemple, vous pouvez afficher une alerte juste au moment où la page devient en avant