2009-08-07 12 views
6

Próbuję skonfigurować wywołanie zwrotne w jQuery, które poprawnie wiąże "to" z obiektem wywołującym. W szczególności tutaj jest kod, nad którym pracuję. Robię ajax połączeń w obiekcie tak:Jak powiązać "to" w przypadku wywołań zwrotnych jQuery?

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

Jednak w Object.prototype.doAjaxCall, this nie odnosi się do właściwej rzeczy. Pracowałem wcześniej z prototypem i wiem, że musisz to powiązać, gdy wykonujesz wywołanie Ajax, ale nie wydaje mi się, aby znaleźć właściwy sposób, aby to zrobić w jQuery. Czy ktoś może wskazać mi właściwy kierunek?

Odpowiedz

1

Bardziej wytrzymała, natywna funkcja wiązania powinna być częścią ECMAScript 3.1. W międzyczasie ...

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

Użyj właściwości jQuery ajaxcontext związać to. np .:

$.ajax({ 
    context: this, 
    url: url, 
    type: 'GET' 
}).done(function(data, textStatus, jqXHR) { 
    this.handleAjaxResponse(); 
}); 
Powiązane problemy