Как связать «это» для обратных вызовов jQuery? - PullRequest
6 голосов
/ 07 августа 2009

Я пытаюсь настроить обратный вызов в jQuery, который правильно связывает «this» с вызывающим объектом. В частности, вот код, с которым я работаю. Я делаю Ajax-вызов в объекте, как это:

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

Однако в Object.prototype.doAjaxCall, this не относится к правильной вещи. Я работал с Prototype и раньше, и я знаю, что вам нужно связать это, когда вы делаете вызов Ajax, но я не могу найти правильный способ сделать это в jQuery. Может ли кто-нибудь указать мне правильное направление?

Ответы [ 2 ]

2 голосов
/ 16 сентября 2015

Используйте свойство jQuery ajax context, чтобы связать это. например:

$.ajax({
    context: this,
    url: url,
    type: 'GET'
}).done( function(data, textStatus, jqXHR) {
    this.handleAjaxResponse();
});
1 голос
/ 07 августа 2009

Более надежная встроенная функция связывания должна быть частью ECMAScript 3.1. А пока ...

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

    $.get(url, null, bind(this, this.handleAjaxResponse));
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...