2015-03-02 36 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

相关问题