1

例如,我有一个类似于电子邮件的应用程序,并且有多个部分(电子邮件组):

  • 收件箱
  • 发送
  • 特殊 x(其中一些也存在于收件箱中)
  • 垃圾

所有这些组都包含电子邮件,我们称之为电子邮件模型。现在我的问题是:

  1. 我应该为所有 4 个组使用一个集合吗?
  2. 或者我应该为每个组使用一个集合?
4

2 回答 2

2

在我看来,将不同的组消息存储到一个集合中会导致数据维护(刷新、渲染视图)出现问题。

您可以在电子邮件组模型中嵌套电子邮件消息集合。每个邮件组都有一个消息池,您可以轻松获取这些消息。

例如,

邮箱模型

var MailBox = Backbone.Model.extend({
    initialize: function(){
        //nest messages collection inside of model
        this.messages = new Messages();
        this.messages.url = "your/path/"+this.id+"/to/RESTful/";
    }
});

消息模型

var Message = Backbone.Model.extend(function(){});

消息集合

var Messages = Backbone.Collection.extend({
    model: Message
});

实例化 MailBox 模型实例

var sentBox = new MailBox({id:"sent"});
//fetch messages in this box
sentBox.collection.fetch();

var inBox = new MailBox({id:"in"});
//fetch messages in this box
sentBox.collection.fetch();

您的消息列表视图 onSync Handler

var MessageListView = Backbone.View.extend({
    initialize: function(){
        //register messages syn event
        this.listenTo(this.model.messages,"sync",this.render);
    },
    render: function(){
        this.model.messages.each(function(msg){
            //merge message model data and view
        });
    }
});

在收件箱和发送箱之间切换时,您可以更改消息列表视图的模型。

希望这对你有帮助。

于 2013-07-25T11:10:26.820 回答
1

在这种情况下,模型将是“Email Message”,因此最好为每个名为“Inbox”、“Sent”等的组使用 Collection,它基于“Email Message”模型。

当然你也可以使用一个名为“Group”的集合,但在我看来这是个坏主意。

于 2013-07-24T09:32:08.107 回答