這是另一個需要考慮的問題。而不是創建一個大部分爲空的模型,然後在獲取後從服務器向其添加屬性,您可以執行下面粘貼的內容。有一件事要考慮上面的例子,如果你創建了一個模型,然後試圖從服務器獲取這個ID並且它不存在,你就必須清理它。下面的代碼將爲您節省下一步。
myModel = Backbone.Model.extend({
url : function() {
/*
create _ POST /model
read _ GET /model[/id]
update _ PUT /model/id
delete _ DELETE /model/id
*/
return this.id ? '/model/' + this.id : '/model';
},
});
myCollection = Backbone.Collection.extend({
model: myModel,
url: function() {
return '/model';
},
comparator: function(model) {
return model.get("foo");
},
getOrFetch: function(id) {
var model = this.get(id) || this.getByCid(id);
if (model) return model;
var url = this.url() +"/"+ id
return new this.model().fetch({url:url});
}
});
var mc = new myCollection(new myModel({foo:"bar"}));
mc.getOrFetch(1)
您想使用'fetch'從遠程服務器檢索項目。 'get'返回集合中已有的特定模型。它會通過URL自動完成 - 你必須不做任何事情。 – tkone 2012-04-26 20:29:51
我想得到一個特定的模型,如果它不存在,我希望我的數據庫添加該模型。我只是無法弄清楚如何讓我的客戶端正確地將我的ID發送到我的服務器。 – prashn64 2012-04-26 20:42:52