Frage

Ich denke, ich verstehe den Unterschied zwischen _create und _init in Widget -Definitionen (siehe zum Beispiel diese Frage), aber ich bin mir immer noch nicht sicher über das Zweck für die Unterscheidung. In welche Art von Setup -Aufgaben gehen _create() oder in _init()? Was geht schief, wenn der Widget -Autor die falsche wählt?

War es hilfreich?

Lösung

Aus:

Verwenden _create Erstellen und Injektion von Markup, Binden von Ereignissen usw. Platzieren Sie die Standardfunktionalität in _init(). Das Dialog -Widget bietet beispielsweise eine autoOpen Parameter, der angegeben ist, ob das Dialog geöffnet werden sollte oder nicht, sobald das Widget initialisiert ist; ein perfekter Ort für _init()!

Ebenfalls:

Die Widget Factory feuert automatisch die _create() und _init() Methoden während der Initialisierung in dieser Reihenfolge. Auf den ersten Blick scheint es, dass die Anstrengung dupliziert wird, aber es gibt einen Sichtunterschied zwischen den beiden. Weil die Widget Factory vor mehreren Instantiationen im selben Element schützt, _create() wird für jede Widget -Instanz als maximal einmal bezeichnet, während _init() wird jedes Mal aufgerufen, wenn das Widget ohne Argumente aufgerufen wird ...

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

Andere Tipps

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

Da gibt es einen Code in jQuery-ui.custom.js wie folgt:

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

Also wenn du Zeichnen Sie ein Diagramm Mit JQuery-UI-Plugin, nachdem es herausgezogen wurde, dann wollen Sie Verwenden Sie neue Daten, um sie zu aktualisieren, Sie müssen dies in _init () tun, um Ihr Diagramm zu aktualisieren. Wenn Sie nur etwas anzeigen und sie nicht vollständig aktualisieren, erfüllt _create () Ihre Anforderungen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top