例如,我有一个类似于电子邮件的应用程序,并且有多个部分(电子邮件组):
- 收件箱
- 发送
- 特殊 x(其中一些也存在于收件箱中)
- 垃圾
所有这些组都包含电子邮件,我们称之为电子邮件模型。现在我的问题是:
- 我应该为所有 4 个组使用一个集合吗?
- 或者我应该为每个组使用一个集合?
例如,我有一个类似于电子邮件的应用程序,并且有多个部分(电子邮件组):
所有这些组都包含电子邮件,我们称之为电子邮件模型。现在我的问题是:
在我看来,将不同的组消息存储到一个集合中会导致数据维护(刷新、渲染视图)出现问题。
您可以在电子邮件组模型中嵌套电子邮件消息集合。每个邮件组都有一个消息池,您可以轻松获取这些消息。
例如,
邮箱模型
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
});
}
});
在收件箱和发送箱之间切换时,您可以更改消息列表视图的模型。
希望这对你有帮助。
在这种情况下,模型将是“Email Message”,因此最好为每个名为“Inbox”、“Sent”等的组使用 Collection,它基于“Email Message”模型。
当然你也可以使用一个名为“Group”的集合,但在我看来这是个坏主意。