2012-07-23 29 views
1

我想從回調中設置我的骨幹模型的參數,但我繼續得到錯誤「this.set不是一個函數。」我以爲_.bindAll是爲了解決這些情況......我用錯了嗎?有沒有一種不同的方法可以用來確保在回調觸發之前我不設置模型的狀態參數?使用骨幹this.set從回調中的問題

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

this並不是指你的模型你.getJSON回調的範圍內。您可以保存對模型的引用,以便在回調中可以像這樣訪問:

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

完美運作。謝謝! – Evan 2012-07-23 17:28:57

+0

@Evan:不客氣!我很高興這有幫助。 – 2012-07-23 18:21:20

+0

@downvoter:上面的答案是否有不正確或不準確的地方? – 2013-11-16 21:49:53