我正在实施博客引擎作为新工作的学习练习。我有一个名为BlogList的Backbone.js Collection类,它由BlogModel对象组成(BlogModel是博客的一个帖子)。我有一个masterBlogList,可以在应用程序的生命周期内将所有博客帖子保存在内存中(我意识到这不是一个真实的设计,但它是规范的一部分)。
我选择使用masterBlogList来保存应用程序的规范状态。所有新帖子,编辑等都会持久保存到数据库(MongoDB)以及masterBlogList。当我想在masterBlogList中显示帖子的子集时,我将它们复制到一个新的BlogList实例中,然后根据搜索条件缩小这个新实例。我再次意识到这可能不是最好的设计(克隆BlogModels和BlogLists),但它是我所拥有的,我不想再做它。
问题是将一个BlogList复制到另一个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())。
非常感谢任何帮助!
答案 0 :(得分:1)
很抱歉打扰了所有人:<,但我让它运转了。代码实际上如上所述工作。问题是我的搜索条件过滤掉了所有帖子,所以我没有看到任何内容。结束了漫长的一天!感谢那些试图帮助我的人......