2009-08-07 9 views
6

Estoy intentando configurar una devolución de llamada en jQuery que vincule "esto" correctamente al objeto que realiza la llamada. Específicamente, aquí está el código con el que estoy trabajando. Estoy haciendo una llamada AJAX en un objeto como éste:Cómo vincular "esto" para devoluciones de llamada jQuery?

Object.prototype.doAjaxCall = function(url) 
    { 
     $.get(url, null, this.handleAjaxResponse); 
    } 

Sin embargo, en Object.prototype.doAjaxCall, this no se refiere a la cosa correcta. He trabajado con Prototype anteriormente y sé que debes unir esto cuando haces la llamada Ajax, pero no puedo encontrar la manera correcta de hacerlo en jQuery. ¿Alguien me puede apuntar en la dirección correcta?

Respuesta

1

Una función de enlace nativa más robusta debería ser parte de ECMAScript 3.1. Mientras tanto ...

Object.prototype.doAjaxCall = function(url) { 
    var bind = function(context, method) { 
     return function() { 
      return method.apply(context, arguments); 
     }; 
    }; 

    $.get(url, null, bind(this, this.handleAjaxResponse)); 
}; 
2

utilizar la propiedad jQuery ajaxcontext para enlazar este. por ejemplo:

$.ajax({ 
    context: this, 
    url: url, 
    type: 'GET' 
}).done(function(data, textStatus, jqXHR) { 
    this.handleAjaxResponse(); 
}); 
Cuestiones relacionadas