Передающие переменные к функциям обратного вызова

Я пытаюсь записать плагин jQuery, который может быть применен к селектору. В этом плагине существуют множественные вызовы веб-сервисов, где методы обратного вызова требуются.

Проблема, которую я имею, поддерживает текущий объект контекста в каждом цикле селектора.

(function($){
  $.fn.myMethod = function(){

    return this.each(function(){
      var c = $(this);
      $.api.methodToCall("", CallbackFunction);
    });

  };

  function CallbackFunction(data, result){
    // do stuff based on c
  }
})(jQuery);

Обычно, Вы немедленно обеспечили бы функцию обратного вызова, которая позволяет мне доступу c, однако в функции обратного вызова, потенциально существует другой вызов API, таким образом, это начало бы становиться грязным. Там какой-либо путь состоит в том, чтобы сделать это?

1
задан mickyjtwin 24 May 2010 в 06:28
поделиться

2 ответа

ИЗМЕНИТЬ

Как заметил Шон, мое первое издание было немного сложнее, чем требовалась ситуация ...

$.api.methodToCall("", function(data, result) {
    CallbackFunction(data, result, context);
});

function CallbackFunction(data, result, c) {
   // you can access 'c' here...
}

Или, если хотите,

$.api.methodToCall("", function(data, result) {
    CallbackFunction.call(c, data, result);
});

function CallbackFunction(data, result) {
    // you can access 'this' here...
}
1
ответ дан 3 September 2019 в 00:20
поделиться

Это самый простой подход

(function($) {
    $.fn.myMethod = function() {
        return this.each(function() {
            var c = $(this);
            $.api.methodToCall("", function() {
                // do stuff based on c
            });
        });
    };
})(jQuery);

Здесь мы переносим функцию обратного вызова в локальную область видимости, и поэтому она имеет прямой доступ к c .

1
ответ дан 3 September 2019 в 00:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: