2

非同期のものはコンテキストを変更することを知っており、それを機能させるにはクロージャーを使用する必要がありますが、次の例を扱うことができませんでした:

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

0 に答える 0