Domanda

Credo di capire la differenza tra _create e _init nelle definizioni di widget (si veda ad esempio questa domanda ), ma non sono ancora certi circa lo scopo per la distinzione. Che tipo di attività di configurazione vanno in _create() o in _init()? Che cosa va storto se l'autore widget di sceglie quella sbagliata?

È stato utile?

Soluzione

Da:

Usa _create per costruire e iniettare markup, associare eventi, ecc Luogo funzionalità predefinita in _init(). La finestra del widget, ad esempio, fornisce un parametro autoOpen che indica se la finestra di dialogo o no dovrebbe essere aperto una volta che il widget è inizializzato; un luogo perfetto per _init()!

Inoltre:

Il widget di fabbrica automaticamente incendi i metodi _create() e _init() durante l'inizializzazione, in questo ordine. A prima vista sembra che il lo sforzo è duplicato, ma c'è un differenza vista tra i due. Perché la fabbrica widget di tutela contro più istanze sulla stesso elemento, _create() sarà chiamato un massimo di una volta per ogni widget di esempio, mentre _init() volontà essere chiamato ogni volta che il widget è chiamata senza argomenti ...

Se usi autore _init() quando _create() avrebbe dovuto essere codificato, il risultato sarà che il codice in _init() verrà eseguita una volta per ogni widget di esemplificazione.

Altri suggerimenti

Risposta breve qui: _create () verrà eseguita quando si esegue il plugin jQuery-ui per la prima volta, come $ xx.your-Plugin (le opzioni); verrà eseguita _init () prima e dopo la prima volta , quando le corse di codice in $ xx.your-Plugin (le opzioni);

Come ci sono un certo codice in jQuery-ui.custom.js in questo modo:

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

Quindi, se si disegnare un grafico con jQuery-ui plug-in, dopo che è tirato fuori, poi si desidera utilizzare i nuovi dati di aggiornarlo , è necessario fare questo _init () per aggiornare il grafico. Se hai appena visualizzare qualcosa e non aggiornarli completamente, _create () soddisferà le vostre esigenze.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top