在回调中使用骨干this.set的问题

时间:2012-07-23 17:08:42

标签: javascript backbone.js callback underscore.js

我试图在回调中设置我的骨干模型参数,但我继续得到错误" this.set不是函数。"我认为_.bindAll旨在解决这些问题...我使用它错了吗?我可以使用不同的方法来确保在回调被触发之前我没有设置模型的状态参数吗?

var Service = Backbone.Model.extend({
    defaults : {
        status : "off"
    },
    url : "/status",
    initialize : function {
        _.bindAll(this, "getStatus");
        this.getStatus();
    },
    getStatus : function() {
        $.getJSON(this.url(), function(data) {
            this.set({status : data.status});
        }); 
    }
});

1 个答案:

答案 0 :(得分:1)

this未在您的.getJSON回调的上下文中引用您的模型。您可以保存对模型的引用,以便在回调中访问它,如下所示:

getStatus : function() {
    var model = this;
    $.getJSON(this.url(), function(data) {
        model.set({status : data.status});
    }); 
}