javascript - example - ¿Cómo decidir entre_init y_create en el widget jQuery UI?
jquery popup window (2)
De:
- http://forum.jquery.com/topic/jquery-ui-1-8-use-of-init
- http://www.erichynds.com/jquery/tips-for-developing-jquery-ui-widgets/
- http://jqueryui.com/demos/dialog/
Use
_create
para compilar e inyectar marcado, enlazar eventos, etc. Coloque la funcionalidad predeterminada en_init()
. El widget de diálogo, por ejemplo, proporciona un parámetroautoOpen
que indica si el diálogo debe estar abierto una vez que se inicializa el widget o no; un lugar perfecto para_init()
!
También:
La fábrica de widgets
_create()
automáticamente los_create()
y_init()
durante la inicialización, en ese orden. A primera vista, parece que el esfuerzo se duplica, pero hay una diferencia de vista entre los dos. Debido a que la fábrica de widgets protege contra múltiples instancias en el mismo elemento,_create()
se llamará como máximo una vez por cada instancia de widget, mientras que_init()
se llamará cada vez que se llame al widget sin argumentos ...
Si el autor usa _init()
cuando _create()
debería haberse codificado, el resultado será que el código en _init()
se ejecutará una vez por instancia de widget.
Creo que entiendo la diferencia entre _create
y _init
en las definiciones de widgets (vea por ejemplo esta pregunta ), pero aún no estoy seguro sobre el propósito de la distinción. ¿Qué tipo de tareas de configuración van en _create()
o en _init()
? ¿Qué ocurre si el autor del widget elige el incorrecto?
Respuesta breve aquí: _create () se ejecutará cuando ejecute su plugin jquery-ui por primera vez, como $ xx.your-plugin (sus opciones); _init () se ejecutará primero y después de la primera vez cuando su código se ejecute en $ xx.your-plugin (sus opciones);
Como hay algunos códigos en jquery-ui.custom.js como este:
var instance = $.data( this, fullName );
if ( instance ) {
instance.option( options || {} )._init();
}
Por lo tanto, si dibuja un gráfico con el complemento jquery-ui, después de que se extrae, y luego desea usar nuevos datos para actualizarlo , debe hacer esto en _init () para actualizar su gráfico. Si solo muestra algo y no los actualiza totalmente, _create () satisfará sus necesidades.