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?

Était-ce utile?

La solution

De:

  

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 de autoOpen   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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top