Comment choisir entre _init et _create dans un widget jQuery UI?
-
14-10-2019 - |
Question
Je pense que je comprends la différence entre _create
et _init
dans les définitions de widget (voir par exemple cette question ), mais je ne suis toujours pas certain de la fin pour la distinction. Quelles sortes de tâches de configuration vont dans _create()
ou _init()
? Ce qui se passe mal si l'auteur choisit un widget le mauvais?
La solution
De:
- http://forum.jquery.com/topic/jquery-ui -1-8-use-de-init
- http://www.erichynds.com/jquery/tips-for- développement-jquery-ui-widgets /
- http://jqueryui.com/demos/dialog/
Utilisation
_create
à construire et à injecter balisage, BIND événements, etc. La place fonctionnalité par défaut dans_init()
. Le widget de dialogue, par exemple, fournit un paramètre deautoOpen
indiquant si oui ou non la boîte de dialogue devrait être ouvert une fois que le widget est initialisé; un endroit parfait pour_init()
!
Aussi:
L'usine widget automatiquement les feux les méthodes de
_create()
et_init()
lors de l'initialisation, dans cet ordre. À première vue, il semble que la l'effort est dupliqué, mais il y a un différence de vue entre les deux. Parce que l'usine widget protège contre plusieurs instanciations sur la même élément,_create()
sera appelé au maximum une fois pour chaque par exemple un widget, alors que la volonté de_init()
être appelé à chaque fois que le widget est appelé sans arguments ...
Si l'auteur utilise _init()
quand _create()
aurait été codé, le résultat sera que le code dans _init()
sera exécutée une fois par instanciation widget de.
Autres conseils
Réponse courte ici: _create () sera exécutée lorsque vous exécutez votre plugin jquery-ui pour la première fois, comme $ xx.your-plugin (options); _init () sera exécuté d'abord et après la première fois lorsque l'exécution de votre code en $ xx.your-plugin (options);
Comme il y a un code dans jquery-ui.custom.js comme ceci:
var instance = $.data( this, fullName );
if ( instance ) {
instance.option( options || {} )._init();
}
Donc, si vous dessiner un graphique avec le plugin jquery-ui, après il est tiré, alors vous voulez utiliser de nouvelles données à mettre à jour , vous devez faire ceci dans _init () pour mettre à jour votre carte. Si vous affichez juste quelque chose et ne sera pas les mettre à jour totalement, _create () répondra à vos besoins.