Quelqu'un peut-il donner une explication plus détaillée sur le cycle de vie des événements par défaut d'un contrôle UI5? Je sais qu'il y a cette page sur la documentation qui donne un aperçu d'un cycle de vie de Control, cependant, je pense qu'il est très bref et voulait quelque chose de plus détaillé. Quelqu'un peut-il lister l'ordre des événements d'un contrôle et expliquer ce que fait chaque événement?
Tu as tout à fait raison. Les détails d'un cycle de vie de contrôle et les détails d'implémentation sont très bien cachés dans les documents. Je vais essayer de résumer ma compréhension jusqu'à présent pour vous.
Le cycle de vie d'un contrôle est principalement déterminé par:
Voici un exemple d'implémentation avec quelques exemples d'utilisations pour les différents crochets:
sap.ui.core.Control.extend("a.sample.Control", {
init : function() {
// instantiate a sub-control
this._btn = new sap.m.Button();
},
onBeforeRendering : function() {
// deregister a listener via jQuery
this.$("subelement").off("click", this.subElementClick);
},
onAfterRendering : function() {
// register a listener via jQuery on a sub-element
this.$("subelement").on("click", this.subElementClick);
},
subElementClick : function() {
// do stuff
},
exit : function() {
// clean up sub-controls and local references
this._btn.destroy();
delete this._btn;
}
});
Pourquoi ne devrais-je pas faire mes trucs init dans mon constructeur?
Il existe un constructeur UI5 de base dans ManagedObject . Il "prépare" votre objet UI5 pour vous et appelle ensuite votre fonction init. Cela signifie que dans votre init, tous les paramètres seront déjà appliqués pour vous et vous pouvez accéder aux propriétés et aux agrégations comme d'habitude.
Pourquoi ne devrais-je pas appeler le rendu?
Le rendu SAPUI5 est intelligent en ce sens qu'il regroupe et optimise les rendus en file d'attente. Par conséquent, vous ne devez jamais appeler rerender
directement mais utiliser à la place invalidate
pour marquer un contrôle pour le rendu.
HF
Chris
UI5 fournit des crochets de cycle de vie prédéfinis pour la mise en œuvre du contrôleur . Vous pouvez ajouter des gestionnaires d'événements ou d'autres fonctions au contrôleur et le contrôleur peut déclencher des événements, pour lesquels d'autres contrôleurs ou entités peuvent s'enregistrer.
UI5 fournit les crochets de cycle de vie suivants:
onInit()
: Appelé lorsqu'une vue est instanciée et que ses commandes (si disponibles) ont déjà été créées; utilisé pour modifier la vue avant qu'elle ne s'affiche pour lier les gestionnaires d'événements et effectuer une autre initialisation unique
onExit()
: appelé lorsque la vue est détruite; utilisé pour libérer des ressources et finaliser les activités
onAfterRendering()
: appelé lorsque la vue a été rendue et, par conséquent, son code HTML fait partie du document; utilisé pour effectuer des manipulations post-rendu du HTML. Les contrôles SAPUI5 obtiennent ce hook après avoir été rendus.
onBeforeRendering()
: appelé chaque fois que la vue est rendue, avant l'appel du rendu et le HTML est placé dans l'arborescence DOM .