JavaScript-привязка для вызовов AJAX - PullRequest
1 голос
/ 29 января 2012

Я пытаюсь привязать функцию обратного вызова AJAX к определенной области, что я делаю неправильно?

вот мой код:

var MainApp = {
    files:{
        "A":{
            url:"files/a.json",
            content:""
        },
        "B":{
            url:"files/b.json",
            content:""
        }
    },
    init:function () {
        this.loadFiles();
    },
    loadFiles:function () {
        for (var i in this.files) {
            var f = function (data) {
                console.log("callback",this);
            };
            console.log("binding",this);
            f.bind(this);
            $.get(this.files[i].url, f);
        }
    }
};

$(function () {
    MainApp.init();
});

Ответы [ 2 ]

1 голос
/ 29 января 2012
f.bind(this);

Function#bind не изменяет исходную функцию, она возвращает новую функцию, привязанную к параметру. Вы, вероятно, имели в виду:

f= f.bind(this);
0 голосов
/ 29 января 2012

Попробуйте использовать вызов:

that = this;
$.get(this.files[i].url, function() {
   f.call(that)
});
...