Antwort

33

Von:

Verwenden _create zu bauen und Markup, binden Ereignisse zu injizieren usw. Legen Standardfunktionalität in _init(). Das Dialogfeld-Widget, z. B. , enthält einen Parameter , der angibt, ob der Dialog geöffnet werden soll, wenn das Widget initialisiert ist; ein perfekter Platz für _init()!

auch:

Die Widget Fabrik automatisch feuert die _create() und _init() Methoden während der Initialisierung, in dieser Reihenfolge. Auf den ersten Blick scheint es, dass die Mühe dupliziert ist, aber es gibt einen Sichtunterschied zwischen den beiden. Da die Widget Fabrik gegen mehrere Instanziierungen auf das gleiche Elemente schützt, wird _create() sein genannt maximal einmal für jede Widget-Instanz, während _init() wird jedes Mal aufgerufen werden, das Widget ohne Argumente aufgerufen ist ...

Wenn der Autor verwendet _init() wenn _create() codiert wurden, sollte das Ergebnis sein wird, dass der Code in _init() wird einmal pro Widget Instanzierung ausgeführt werden.

+0

Nun, einmal pro * Aufruf * an das Widget :-) In jedem Fall ist dieser zweite Link von unschätzbarem Wert (zu diesem und anderen Fragen); Weiß nicht, wie ich es verpasst habe. Vielen Dank! –

4

Kurze Antwort hier: _create() wird ausgeführt, wenn Sie Ihre jquery-ui-Plugin zum ersten Mal ausführen, wie $ xx.your-Plugin (Optionen); _init() wird ausgeführt zuerst und nach dem ersten Mal, wenn Ihr Code in $ xx.Ihr-Plugin (Ihre Optionen) läuft;

Da es einige Code in jquery-ui.custom.js wie diese sind:

var instance = $.data(this, fullName); 
if (instance) { 
    instance.option(options || {})._init(); 
} 

Also, wenn Sie ein Diagramm mit jquery-ui-Plugin ziehen , nachdem sie herausgezogen ist, dann Sie wollen zu verwenden Sie neue Daten, um es zu aktualisieren, Sie müssen dies in _init() tun, um Ihr Diagramm zu aktualisieren. Wenn Sie nur etwas anzeigen und nicht vollständig aktualisieren, erfüllt _create() Ihre Anforderungen.