En cuanto a la fábrica del aparato UI de jQuery ...cómo declarar una variable estática/clase en un widget de widget de fábrica de jQuery UI
¿Cuál es la mejor manera de tener una variable de nivel variable estática/clase que se comparte entre todos ¿instancias?
p. Ej.
$.widget("ui.staticTest", { staticVar:'unchanged', test: function(a){ if(a){ this.staticVar= a; } alert(JSON.stringify(this.staticVar)); } }); $('#test').staticTest(); $('#parent').staticTest(); $('#test').staticTest('test','changed'); $('#parent').staticTest('test');
en lo anterior, si staticVar eran estáticas, $ ('# matriz) staticTest ('test').; alertaría 'cambiado' pero en su lugar alerta 'sin cambios'.
(este código está en jsFiddle si quieres tener una obra de teatro: http://jsfiddle.net/alzclarke/Sx8pJ/)
Las soluciones que se me ocurre a mí mismo son feas:.
1) $ ('cuerpo') de datos ('sharedVariable ', myData) - esto no parece una buena práctica, ¿qué pasa si alguien o algo borra el cuerpo de datos 2) lo almacena en el espacio de nombres del prototipo, por ejemplo, = $ .ui.staticTest.prototype.staticVar = myData; esto también suena las campanas de alarma
esta es una gran respuesta, tan simple, y a diferencia de las otras respuestas, permite que las variables estáticas sean verdaderamente privadas. – alzclarke
¿Puedo preguntar cómo se podría acceder (establecer) a staticVariable desde fuera del widget? Necesito una opción que sea configurable una vez para todas las instancias de widgets. – Marc
puede hacer una función para hacerlo y hacer que tenga alcance global –