簡體   English   中英

骨干“智能”更新不會合並模型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM