2012-09-07 14 views
6

quiero pasar algunos parámetros adicionales a una devolución de llamada jQuery.Deferred hecho, lo estoy haciendo así ahora:pasar parámetros adicionales a jquery.Deferred devolución de llamada

//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); 
}); 

Me preguntaba si hay una mejor forma de hacer esto? Pensé que había leído en alguna parte acerca de una manera más limpia de pasar parámetros sin la necesidad de una función de contenedor anónima, pero no puedo recordar cuándo la leí o qué leí. Las búsquedas de Google no encontraron nada hasta el momento.

Respuesta

9

el fin de pasar algo que .done de devolución de llamada que necesita para pasar en .resolve, por ejemplo

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

pero en su caso dfd es un objeto $.ajax y .resolve llama internamente, por lo que no tiene control sobre eso. Por lo tanto, la única forma de hacerlo es usar la función anónima y el cierre.

Por cierto: no hay nada sucio en esta solución.

+0

Ok, excelente, es probable que sea un caso personalizado que leí acerca de dónde la resolución fue hecha por el programador. ¡Gracias! – Asciiom

Cuestiones relacionadas