![](/img/trans.png)
[英]Resetting Backbone collection with new models doesn't override previous models?
[英]Backbone “smart” update doesn't merge models
我的收藏:
return Backbone.Collection.extend({
url: config.API + 'Events?count=1',
initialize: function() {
this.fetch();
},
more: function() {
this.fetch({ remove: false, merge: true });
}
});
對服務器的每個請求均返回以下內容:
[{ “EVENTID”:1, “用戶”:{ “用戶ID”:6, “用戶名”: “菲爾”, “照片”:NULL} “緯度”: “46.3165906656757”, “經度”: “46.5820399671793”, “描述”: “Hdbdjcjfgkgkgjf”, “EVENTDATE”: “2014-05-10T21:44:36”, “DateCreate”: “2014-11-28T19:19:51”, “LastComments”:[{ “CommentId”:如圖1所示, “用戶”:空, “文本”: “HELLO”, “DateCreate”: “2014-11-28T17:41:46”, “喜歡”:NULL, “LikesCount”:0},{ “CommentId”: 2, “用戶”:空, “文本”: “HELLO”, “DateCreate”: “2014-11-29T00:59:43”, “喜歡”:NULL, “LikesCount”:0},{ “CommentId”: 3, “用戶”:空, “文本”: “HELLO”, “DateCreate”: “2014-11-29T01:07:13”, “喜歡”:NULL, “LikesCount”:0},{ “CommentId”:如圖4所示, “用戶”:空, “文本”: “HELLO”, “DateCreate”: “2014-11-29T01:10:41”, “喜歡”:NULL, “LikesCount”:0},{ “CommentId”: 5, “用戶”:空, “文本”: “HELLO”, “DateCreate”: “2014-11-29T01:17:33”, “喜歡”:NULL, “LikesCount”:0},{ “CommentId”: 6, “用戶”:空, “文本”: “HELLO”, “DateCreate”: “2014-11-29T01:29:59”, “喜歡”:NULL, “LikesCount”:0}], “照片”:空, “LastLikes”:空}]
因此,初始化之后,集合中只有一個模型。 但是每次我調用more()時,該模型都不會更新,畢竟在集合中有如此多的重復項是我調用more()的次數所致。 這種行為對我來說似乎很奇怪,因為在文檔中我看到了:
set方法使用傳遞的模型列表執行集合的“智能”更新。 如果列表中沒有模型,則將添加該模型; 如果模型已經在集合中,則其屬性將被合並; 並且如果集合中包含列表中未包含的任何模型,則會將其刪除。 發生這種情況時,將觸發所有適當的“添加”,“刪除”和“更改”事件。 返回集合中涉及的模型。 如果您想自定義行為,則可以使用以下選項將其禁用:{add:false},{remove:false}或{merge:false}。
問題是您沒有傳統的id
字段。 請參閱主干-為ID使用其他字段名稱
您需要指定自定義模型類型。
var EventModel = Backbone.Model.extend({
idAttribute: "EventId"
});
Backbone.Collection.extend({
model: EventModel
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.