Ir al contenido principal

This para jQuery UI y JavaScript

Buenas. Veréis, llevo ya unos días refactorizando un código javascript de esos infumables a POO para que el código sea muchisimo más mantenible. Hasta aquí ningún problema, pero el problema viene cuando quieres hacer uso de jQuery dentro de tus clases.

El problema es el siguiente: el objeto this cuando estas dentro de una función jQuery no es el mismo que cuando estas dentro de tu función definida para tu clase. Para evitar que uno machaque al otro, deberemos previamente guardar una referencia a dicha variable. Esto se consigue con el metodo data() que llevan muchas funcionalidades de jQuery UI. Para ejemplo un boton:
function MyClass() {
  this.myField = 1;
}

MyClass.prototype.MyMethod = function () {
  $("lista").sortable({
    start: function(event, ui) {
      alert("No es lo mismo this:" + $(this) + " que this:" + self.myField);
    }
  }).data("self", this);
}

Comentarios

Entradas populares de este blog

Formatear fecha JSON

Para poder representar de forma bonita y humana una fecha retornada por un JSON por ejemplo, la función quedaría tal que así. En mi caso, el formato esperado es: dd/MM/yyyy hh:mm

function FormatDate(fecha) { var fechaObj = new Date(fecha); return (fechaObj.getDate() < 10 ? '0' : '') + fechaObj.getDate() + '/' + (fechaObj.getMonth() < 10 ? '0' : '') + fechaObj.getMonth() + '/' + fechaObj.getYear() + ' ' + (fechaObj.getHours() < 10 ? '0' : '') + fechaObj.getHours() + ':' + (fechaObj.getMinutes() < 10 ? '0' : '') + fechaObj.getMinutes(); };

Generar números aleatorios con Postgres

Muchas veces nos encontraremos con que tenemos que poblar una BD con numeros para poder testear un funcionalidad que estemos programando. En postgres es tan sencillo como:

update schema.tabla set columnaNumerica = floor(random() * N) + desviacion;
Con desviación me refiero a que, si no lo añadimos, random generara numeros empezando por el 0 hasta N. El uso de floor es para redondear y quedarme solo con la parte entera. Ya que random genera floats entre 0 y 1.

Espero os sirva este pequeño truquillo. Un saludico.