2012-09-07 19 views
6

Chcę przekazać jakieś dodatkowe parametry do jQuery.Deferred wykonanej zwrotnego, robię to tak teraz:przekazać dodatkowe parametry do jquery.Deferred zwrotnego

//dfd gets defined here as the return value of jQuery.ajax 

var me = this; 
var selector = $("#selector"); 

dfd.done(function(response){ 
    me.updated(response, selector); 
}); 

Zastanawiałem się, czy istnieje lepszy sposób to zrobić? Wydawało mi się, że przeczytałem gdzieś o czystszym sposobie przekazywania parametrów bez potrzeby anonimowej funkcji owijki, ale nie mogę na całe życie zapamiętać, gdzie ją czytałem lub co czytałem. Wyszukiwania Google nie pojawiły się tak daleko.

Odpowiedz

9

W celu przekazania coś .done zwrotnego trzeba przekazać go w .resolve np

dfd.done(function(selector) { 
    console.log(selector); 
}); 
dfd.resolve(selector); 

ale w twoim przypadku dfd jest $.ajax przedmiot i .resolve nazywa się wewnętrznie, więc nie masz kontroli nad to. Dlatego jedynym sposobem na to jest użycie anonimowej funkcji i zamknięcia.

Przy okazji: w tym rozwiązaniu nie ma nic nieczystego.

+0

Dobrze, jest to prawdopodobnie niestandardowy przypadek, w którym przeczytałem o tym, gdzie zostało rozwiązane przez programistę. Dzięki! – Asciiom

Powiązane problemy