我想将一些额外的参数传递给jQuery.Deferred完成的回调,我现在这样做:
//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);
});
我想知道是否有更好的方法来做到这一点?我以为我已经阅读过一些关于传递参数的更简洁方法,而不需要匿名包装函数,但我不能为我的生活记住我在哪里阅读,或者我读到的内容。到目前为止谷歌搜索没有发现任何事情。
答案 0 :(得分:10)
要将内容传递给.done
回调,您需要在.resolve
中传递,例如
dfd.done( function(selector) {
console.log( selector );
});
dfd.resolve( selector );
但在您的情况下,dfd
是$.ajax
对象,内部调用.resolve
,因此您无法控制它。因此,唯一的方法是使用匿名函数和闭包。
顺便说一下:这个解决方案没有什么不洁净的。