Pregunta

Creo que entiendo la diferencia entre _create y _init en las definiciones de widgets (véase, por ejemplo esta pregunta ), pero todavía no estoy seguro sobre el objetivo para la distinción. ¿Qué tipo de tareas de configuración ir en _create() o en _init()? Lo que va mal si el autor Reproductor elige la equivocada?

¿Fue útil?

Solución

De:

Uso _create para construir e inyectar de marcado, se unen eventos, etc. Place funcionalidad predeterminada en _init(). El widget de diálogo, por ejemplo, proporciona un parámetro autoOpen que indica si o no el cuadro de diálogo debe ser abierta una vez que el widget es inicializado; un lugar perfecto para _init()!

También:

El widget de fábrica se dispara automáticamente los métodos _create() y _init() Durante la inicialización, en ese orden. A primera vista parece que la se duplica el esfuerzo, pero hay una diferencia visual entre los dos. Debido a que el widget de fábrica protege contra múltiples instancias de la mismo elemento, _create() será llamado un máximo de una vez por cada ejemplo de widget, mientras que voluntad _init() ser llamado cada vez que el widget es invoca sin argumentos ...

Si los usos de autor _init() cuando _create() debería haber sido codificado, el resultado será que el código en _init() se ejecutará una vez por cada instanciación del widget.

Otros consejos

Respuesta corta aquí: _create () se ejecutará cuando se ejecuta el plugin jquery-ui, por primera vez, al igual que $ xx.your-plugin (opciones); _init () se ejecutará nombre y después de la primera vez cuando el código se ejecuta en $ xx.your-plugin (opciones);

Como hay un poco de código en jquery-ui.custom.js como esto:

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

Por lo tanto, si dibujar un gráfico con jquery-ui plug-in, después de que se extrae, a continuación, desea utilizar nuevos datos para actualizar , que tiene que hacer esto en _init () para actualizar su gráfico. Si usted acaba de mostrar algo y no los actualizará totalmente, _create () se adapte a sus necesidades.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top