2012-06-06 87 views
0

我正在實施Blog Engine作爲新工作的學習練習。我有一個名爲BlogList的Backbone.js集合類,它由BlogModel對象組成(一個BlogModel是博客中的一篇文章)。我有一個masterBlogList,它在應用程序的整個生命週期內保留所有的博客文章(我意識到這不是一個現實的設計,但它是規範的一部分)。將模型添加到Backbone.js集合默默無聞

我選擇使用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); 
    }, 

(續)

。我也嘗試添加postModel的clone()以及新的App.BlogModel(postModel.toJSON())。

任何幫助將不勝感激!

+0

'self.add(postModel);'不起作用? 'sourceList.each'內的'console.log(postModel)'說了些什麼? – theotheo

回答

0

對不起有人困擾:<,但我得到它的工作。代碼實際上的工作如上所述。問題是我的搜索標準過濾掉了所有的帖子,所以我沒有看到任何東西。漫長的一天結束!感謝那些試圖幫助我的人......