2012-07-11 97 views
0

我試圖將模型列表添加到要存儲在本地的集合中。我還沒有完全理解骨幹,這是真正導致這個問題的原因。Backbone將模型列表保存到集合

我基本上拉了一個RSS訂閱源,將訂閱源中的每個項目分配給一個模型,並嘗試將模型列表放到一個集合中,以便稍後對它們進行迭代。

我收到一個錯誤,說我需要爲集合指定一個Url。

如果有人能向我解釋我需要遵循的正確過程來實現我的目標,那將是非常輝煌的。

目前我有:

var DetailIndividual = Backbone.Model.extend();  
var DetailsIndividual = Backbone.Collection.extend({ 
    model: DetailIndividual 
}); 

var Search = Backbone.View.extend({ 
    events: { 
     'click a.individualCast' : 'pullIndividual' 
    }, 
    initialize: function() { 
     this.detailsIndividual = new DetailsIndividual(); 
     _this = this; 
     this.detailsIndividual.bind('reset', function(collection) { 
      collection.each(function(item) { 
       //code to handle update 
      }); 
     }); 
    }, 
    pullIndividual: function(e){ 
     e.preventDefault(); 
     //Logic to pull in RSS feed 
     for (var i = 0; i < result.feed.entries.length; i++) { 
      entry[i] = new DetailIndividual({ title: result.feed.entries[i].title, link: result.feed.entries[i].link, }); 
     } 
     this.detailsIndividual.add(entry); 


    } 
}); 

回答

1

就是從這裏報出了錯誤,因爲模型必須有url屬性: http://backbonejs.org/docs/backbone.html#section-167

你模型中有url屬性?

+0

它doesnt,我不想使用一個url屬性,因爲我不會在任何地方保存模型數據。我能做些什麼來解決對url屬性的需求嗎? – blacktea 2012-07-11 16:31:28

+0

@blacktea默認情況下,除非重寫backbone.sync,否則必須指定url屬性。 – 2012-07-11 16:38:37

0

你得到錯誤的原因是你綁定了'重置'事件。 'reset'只會觸發一個collection.fetch或顯式調用collection.reset,在你的情況下,你永遠不會從你的集合中從服務器獲取 - 我從你的代碼中假設你已經有內存中的feed - 所以除非你明確重置,否則不需要聽重置。

在你的代碼中,你並沒有真正擴展Collection和Model,所以實際上不需要製作擴展對象 - 只需使用Backbone.Collection即可。您甚至不需要創建Model擴展,因爲默認情況下,當您添加JSON時,會自動創建Backbone.Model。如果你正在創建一個真正的自定義模型(使用方法覆蓋和添加),那麼只需要分配collection.model。

這裏是你可以加載您的收藏方式:

var search = Backbone.View.extend({ 
    events: { 
     'click a.individualCast' : 'pullIndividual' 
    }, 
    initialize: function() { 
     this.detailsIndividual = new Backbone.Collection(); 
    }, 
    pullIndividual: function(e) { 
     e.preventDefault(); 
     //Logic to pull in RSS feed 
     for (var i = 0; i < result.feed.entries.length; i++) { 
      this.detailsIndividual.add({ 
       title: result.feed.entries[i].title, 
       link: result.feed.entries[i].link 
      }); 
     } 
    } 
}); 

你沒有提供你怎麼想解析集合中的任何代碼(除了在「復位」),但本質上你會加載如圖所示從飼料中收集。

相關問題