2015-03-02 100 views
2

我很難理解Backbone集合如何映射外部json文件......如果您有一種json,並且您只能從該json的特定屬性創建模型,你是怎麼做到的?Backbone從特定的Json屬性中創建一個集合

  var Comic = Backbone.Model.extend(); 
      var ComicCollection = Backbone.Collection.extend({ 
      url: 'http://www.theurlofthejson.com', 
      parse: function (response) { 
        return response.comicsbooks; 
        }, 
      model: Comic, 
      }); 

如果然後創建一個集合

var comicCollection = new ComicsCollection(); 

如果使這個

console.log(comicCollection.fetch()) 

它返回我在comicsbooks不分析整個JSON水平

爲什麼我獲取json對象的整個結構,而不僅僅是我的漫畫屬性?

我的問題是基於這一個,但實施/解決方案不適合我 Parsing json backbone

對不起的工作,我很懷念連接的URL的JSON響應的示例:

{ 
    "status": "ok", 
    "count": 1, 
    "count_total": 4, 
    "pages": 4, 
    "comicsbooks": [ 
     { 
      "id": 363, 
      "type": "american_comics", 
      "status": "publish", 
      "title": "Popeye" 
     } 
    ] 
} 

回答

1

您的parse方法錯誤。它看起來像你重寫你的Comic模型變量。如果你只想要comicbooks屬性來彌補您的收藏做:

parse: function(response){ 
    return response.comicbooks; 
} 
+0

是的,我覆蓋了動漫模型,但是這對我的作品(aparently)。 事實是,這不是一個好的解決方案,因爲我需要創建一個模型,然後重寫它......這是告訴集合,她必須映射只有JSON響應的屬性的正確方法? – 2015-03-02 17:03:29

+0

這可能適合你,但這樣做沒有意義。你爲什麼將'response.comicbooks'分配給'Comic'? 'Comic'是一個主幹模型,'response.comicbooks'是你想要注入到你的集合中的原始JSON,你只需返回'response.comicbooks'。骨幹將負責其餘部分,比如在服務器響應中的「comicbooks」數組中的每個對象中創建集合中的模型。 – garethdn 2015-03-02 17:07:07

+0

事實是,你最後一件事評論_「Backbone會照顧其餘的,就像在服務器響應中的漫畫數組中的每個對象中創建你的集合中的模型」_... 我真的不明白骨幹如何與json文件一起工作,你如何告訴它你只想從JSON文件的屬性中構建漫畫模型..我的意思是你怎麼知道你不需要所有其他的屬性? – 2015-03-02 17:10:22