我正在实施博客引擎作为新工作的学习练习。我有一个名为 BlogList 的 Backbone.js Collection 类,它由 BlogModel 对象组成(BlogModel 是博客的单个帖子)。我有一个 masterBlogList,它在应用程序的整个生命周期内将所有博客文章保存在内存中(我意识到这不是一个现实的设计,但它是规范的一部分)。
我选择使用 masterBlogList 来保存应用程序的规范状态。所有新帖子、编辑等都保存在数据库 (MongoDB) 以及 masterBlogList 中。当我想在 masterBlogList 中显示帖子的子集时,我将它们复制到一个新的 BlogList 实例中,然后根据搜索条件缩小这个新实例的范围。再一次,我意识到这可能不是最好的设计(克隆 BlogModels 和 BlogLists),但这是我所拥有的,我不想重新设计它。
问题是将一个 BlogList 复制到另一个是行不通的。即使源列表不为空,目标列表也始终为空。我试图以各种方式调试它,但没有运气。这是 BlogList 源代码的相关部分:
// BlogList
$ (function () {
App.BlogList = Backbone.Collection.extend ({
model : App.BlogModel,
url : '/blog-entries',
comparator : function (a) {
return -(new Date (a.get ('date')));
},
populateFromMemory : function (sourceList) {
// this.reset ();
var self = this;
sourceList.each (function (postModel) {
self.add(postModel);
});
var foo = new App.BlogModel();
this.add(foo);
},
(继续...)
即使是关于 foo 的最后一点也不起作用。我还尝试添加 postModel 的 clone() 以及新的 App.BlogModel(postModel.toJSON())。
任何帮助将不胜感激!