2010-10-20 13 views
7

Algunos jquery completan el uso de widgets _create, mientras que otros usan el método _init, ¿alguien puede explicar las diferencias entre los dos?jquery widget, _create o _init

¿Alguna guía sobre cuándo es mejor extender el widget o extender directamente jquery.fn?

Respuesta

4

La desventaja de extender el widget (en oposición a $ .fn) es que crea una dependencia en jquery-ui que define el widget "clase". Esa dependencia puede ser costosa para los usuarios de su complemento que no usan jquery-ui.

En cuanto a _create vs _init goes, estoy bastante seguro de que _init fue primero y luego en una revisión reciente introdujeron y favorecieron _create. Podría estar equivocado sobre esto, pero creo que _init todavía es compatible. Si es así, no debería haber ninguna diferencia entre los dos.

+0

Buen punto en el widget. ¿Tiene algún reemplazo de widget si no quiero introducir una dependencia adicional a jqueryui? –

+2

Usted podría simplemente extraer el código del widget e incluirlo en su archivo .js. Se habló de mover el widget a jquery en lugar de jqueryui, pero no sé si se programó para una versión específica o todavía no. –

+4

Hay una diferencia entre _init y _create. _create se llama solo una vez. _init se llamará varias veces como se menciona en @fudgey – jsgoupil

18

Desde el jQuery UI Developer Guide:

Una vez creado el elemento, todas las demás llamadas al nombre del widget en el que el primer parámetro no es una cadena llamará al método _init(); si se pasan opciones, el método .Opción() será llamada antes de que el método _init()

+0

Lamentablemente, el enlace ahora es brindis. –

+1

[Pruebe este enlace a la API] (https://api.jqueryui.com/jquery.widget/#method-_init) o ​​[esta publicación del blog] (http://www.erichynds.com/blog/tips- para-desarrollo-jquery-ui-widgets) – Mottie

3

Un widget tiene tres fases:

+-------+----------------+---------------+--------------------------------------------------------------------------------------------+ 
| Phase | Name   | jQuery Method | Description           | 
+-------+----------------+---------------+--------------------------------------------------------------------------------------------+ 
|  1 | Creation  | _create  | First time the widget is applied to an element, it is called.        | 
|  2 | Initialization | _int   | The _init method is called after _create when the widget is first applied to its elements. | 
|  3 | Destruction | destroy  | The widget's destroy method is used to detach a widget from an element.     | 
+-------+----------------+---------------+--------------------------------------------------------------------------------------------+ 

NOTA: Los nombres de los métodos que comienzan con un guión están destinados a ser privados por convención.


lo que hay una diferencia entre _create y _init. Uno se usa para la creación y el otro se usa para la inicialización. Cada vez que llame al widget sin argumentos o con opciones, indirectamente llamará al método _init. Por lo tanto, esto puede usarse para reiniciar (reinicializar) un widget o pasarle diferentes opciones.

Más detalles sobre cada fase here.

Cuestiones relacionadas