在回调中使用主干this.set时出现问题

Problems using backbone this.set from within a callback

本文关键字:set 问题 this 回调      更新时间:2024-01-05

我试图在回调中设置主干模型的参数,但我仍然收到错误"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});
        }); 
    }
});

this不会在.getJSON回调的上下文中引用您的模型。你可以保存对你的模型的引用,这样它就可以在回调中访问,如下所示:

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