Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Contexto de variable dentro de callback

Estas en el tema de Contexto de variable dentro de callback en el foro de Frameworks JS en Foros del Web. ¿Hola, que tal? Soy un poco novato en el arte de Jquery, y resulta que tengo una clase creada con prototype (supongamos MiClase), en la ...
  #1 (permalink)  
Antiguo 04/01/2012, 16:54
 
Fecha de Ingreso: enero-2012
Mensajes: 1
Antigüedad: 12 años, 3 meses
Puntos: 0
Pregunta Contexto de variable dentro de callback

¿Hola, que tal? Soy un poco novato en el arte de Jquery, y resulta que tengo una clase creada con prototype (supongamos MiClase), en la cual dentro de uno de sus métodos, estoy iterando con un each sobre un conjunto de nodos específico. El problema que se me presenta es que dentro de dicha iteración , necesito utilizar un atributo de MiClase, pero no se como contextualizarla.

Gráficamente, por ejemplo:

Código:
var MiClase = function () {
    this.mensajeParaAlert = "Hola";
};

MiClase.prototype.mostrarAlert = function () {
     $(".nodos").each(
     function(index,element) {
          alert(this.mensajeParaAlert);
     });
};
Ese codigo me tira una serie de N alerts de undefined ya que dentro de la funcion "this" está descontextualizado. Y quiero saber como trabajar con el contexto MiClase dentro del each.
Muchas gracias.
  #2 (permalink)  
Antiguo 05/01/2012, 06:07
Avatar de Dnielf  
Fecha de Ingreso: diciembre-2008
Ubicación: 127.0.0.1
Mensajes: 72
Antigüedad: 15 años, 4 meses
Puntos: 14
Respuesta: Contexto de variable dentro de callback

Con this te estás refiriendo al scope creado por el callback, por lo que es mejor crear una variable, el callback buscará self en su scope y como no lo encontrará ascenderá al scope padre creado por la función mostrarAlert donde si existe self.

Código Javascript:
Ver original
  1. var MiClase = function () {
  2.     this.mensajeParaAlert = "Hola";
  3. };
  4.  
  5. MiClase.prototype.mostrarAlert = function () {
  6.     var self = this;
  7.      $(".nodos").each(
  8.      function(index,element) {
  9.           alert(self.mensajeParaAlert);
  10.      });
  11. };

Etiquetas: class, context, jquery
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:05.