非同期のものはコンテキストを変更することを知っており、それを機能させるにはクロージャーを使用する必要がありますが、次の例を扱うことができませんでした:
var loadTemplate = function(options){
var def = $.Deferred();
$.ajax({
url: '/',
data: { id: options.id },
type: 'GET'
}).done(function(template){
// HERE template's id !== options.id
$('body').append(template);
def.resolve();
});
return def.promise();
};
loadTempate
私は別のIDで何度か呼び出します。しかし、最初の成功した ajax の結果には、ロードされた が含まれますが、それtemplate
に渡されるのは同じではありませんoptions.id
。
何かご意見は?
アップデート
私はローダーを持っています:
var loader = function(){
var _load = function(options){
$.when(loadTemplate(options), loadAnotherStuff(options))
.done(function(res){
// a lot of work here
});
};
return {
load: _load
}
};
次に、ページからそれを呼び出します。
Loader.load({ id: 1});
Loader.load({ id: 2});
Loader.load({ id: 3});