想象一下,我需要使用BackboneJS创建像Gmail一样的单页应用程序。 每当邮件项目标有新标签/删除现有标签时,邮件项目应出现在相应的列表中。
我假设每个电子邮件列表(如收件箱,已发送邮件,某些自定义标签)都可以设计为集合。每当邮件项目被存档或标记有其他标签或删除现有标签时,邮件项目应从一个列表中删除并适当添加到其他列表中。
这是一种正确的设计方法吗?
答案 0 :(得分:0)
因此,您希望将电子邮件model
放在许多不同的collection
中(例如inbox
和sent
)。这个有可能。但我建议给这封电子邮件model
。告诉电子邮件model
它有这个和这个标签。
您将收到collection
封电子邮件;在此collection
中,您可以创建函数以轻松提取inbox
和sent
模型。
答案 1 :(得分:0)
你是对的。这是完美的设计方法。这使您可以轻松管理事件,如下所示:
var Inpox = Backbone.Collection.extend({
model: Email,
....
});
var SentItem = Backbone.Collection.extend({
model: Email,
....
});
emailApp.on("sent",function(){// When sent triggered from Email
//Do sent email specific task
backboneEventObject.trigger("add");
});
backboneEventObject.on("add", function(){
newSentItemCollection.trigger("add");// Trigger add on the sent Item Collection
});