Come decidere tra _init e _create nel widget di jQuery UI?
-
14-10-2019 - |
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?
Soluzione
Da:
- http://forum.jquery.com/topic/jquery-ui -1-8-uso-di-init
- http://www.erichynds.com/jquery/tips-for- sviluppo-jquery-ui-widgets /
- http://jqueryui.com/demos/dialog/
Usa
_create
per costruire e iniettare markup, associare eventi, ecc Luogo funzionalità predefinita in_init()
. La finestra del widget, ad esempio, fornisce un parametroautoOpen
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 ??strong>, 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.