我有以下Backbone.js的集合:如何更新集合中的模型?
var Tags = Backbone.Collection.extend({
url: "/api/v1/tags/"
}),
如何更新集合中的車型之一,以便它發佈到/ API/V1 /標籤/ ID和保存數據,該模型。
所以,如果我收集 在更改產品型號名稱與編號2應該投入到 /API/V1 /標籤/ 2以下數據: 名稱:新名稱編號:2
我有以下Backbone.js的集合:如何更新集合中的模型?
var Tags = Backbone.Collection.extend({
url: "/api/v1/tags/"
}),
如何更新集合中的車型之一,以便它發佈到/ API/V1 /標籤/ ID和保存數據,該模型。
所以,如果我收集 在更改產品型號名稱與編號2應該投入到 /API/V1 /標籤/ 2以下數據: 名稱:新名稱編號:2
你可以將變量傳遞給save
方法。它接受jQuery的ajax
方法使用的所有選項(除非你overrided Backbone.Sync
)
你可以這樣做:
model.save({ name:'new name' })
;
id
和PUT
方法會自動由Backbone爲您添加。
你也可以使用HTTP補丁來進行選擇性更新 – 2013-03-21 10:20:06
我最近也想更新集合中的特定模型。問題是,如果我確實使用model.save
它並沒有更新集合。目標是更改收集中的模型,在服務器上更改它,相應地更新集合,而不是使用sync
方法。所以例如我有我的變量collection
,我想用id = 2
更改模型。
所以第一件事情,我將創建一個實例模型,就像這樣:var model = collection.get(2)
然後我會更新這個特定型號的屬性:model.set({name: 'new name'})
然後我將它保存到服務器:model.save({}, {url:'/api/v1/tags/'+model.get('id')})
然後我們必須相應地更新集合以適應更改:collection.set({model},{remove: false})
set
方法 - 這是通過參數中傳遞的模型列表對集合進行的「智能」更新。 remove: false
參數 - 這是集合刪除集合中現有模型的限制。更多here。
您可能會錯過的第一件事是,在您對應的標記模型中,您需要設置「urlRoot」以匹配Collection的「url」。否則,它不知道收集所有:
var Tag = Backbone.Model.extend({
urlRoot: "/api/v1/tags"
});
var Tags = Backbone.Collection.Extend({
model: Tag,
url: "/api/v1/tags"
});
如果要單獨保存的標籤,這是有用:
var tag = collection.get(2);
tag.set({key: "something"});
tag.save(); // model.save works because you set "urlRoot"
的收集,「創建()」也「 update()「如果id不爲null。這並不令人困惑。 :)因此,這與前面的示例非常相似:
collection.create({id: 2; key: "something"});
這將更新id = 2的現有標記,然後觸發PUT。
這是一個古老的問題;回答是因爲我正在尋找相同的答案 - 你可能早就解決了這個問題,並且繼續前進。 :)
你試過'model.save({name:'new name'});'? – 2013-03-18 20:36:31