如何使用Backbone.js从嵌套的JSON构建集合/模型

时间:2012-01-09 00:03:21

标签: javascript backbone.js backbone-relational

我是Backbone.js的新手

我有一个 JSON ,如图所示! 我看到了一些关于Backbone-relational的答案,但仍然没有说明问题!

如何将 JSON 转换为Backbone.js集合/模型?

我用代码更新但它没有像预期的那样工作!我做的时候看不到模特:

我的结构是:

[0]:是模型的集合

[谱号] + ... + [休息]:是模型的集合

(谱号)=> [0] + ... + [9]:是模型(标题包含字符串,路径也是)

非常感谢!!

编辑(10.01.12):

我的解决方案:

window.initModel = Backbone.Model.extend({
  defaults: {
    "title": "",
    "path": ""
  }
});
window.CustomCollection = Backbone.Collection.extend({
  model: initModel
});
window.Init = Backbone.Model.extend({
  url : function(){
    return  "/api/data.json"      
  },

  parse: function(response) {

    clefs = new CustomCollection();
    clefs.add(response.clefs);        
    this.set({clefs: clefs});

    .....

    rests = new CustomCollection();
    rests.add(response.rests);        
    this.set({rests: rests});
} 
});

this也帮了我!

Nested Array

3 个答案:

答案 0 :(得分:18)

我正在工作,所以我不能给你一个完全编码的答案,但要点是,你可以在顶级模型中执行以下操作来实现嵌套模型层次结构:

var AmericasNextTopModel = Backbone.Models.extend({
    initialize: function(){

        this.set({
             clefs: new ClefCollection(this.get('clefs')),
             accidentals: new AccidentalCollection(this.get('accidentals')),
             notes: new NoteCollection(this.get('notes')),
             rests: new RestCollection(this.get('rests'))
        });
    }
});

我不使用骨干关系,所以我不能给你一个答案。

您是否正在制作在线乐谱阅读器/编辑器? :D Cool我很乐意在你完成时看到它。

答案 1 :(得分:0)

reset方法(see 'reset')允许您将JSON数组传递给集合。 这相当于PUT方法,用JSON哈希替换指定的集合。

您还可以使用add方法添加到现有集合,或在创建新集合时将JSON哈希传递到构造函数中。

您必须对阵列进行一些基本的清理才能以适当的格式进行清理,然后convert it to JSON

答案 2 :(得分:0)

我使用PHP将Feed作为JSON抓取,因为它位于不同的域上。我将这些结果保存到JS变量中,然后我就成功使用它来将它放入我的Backbone集合中......

var feedCollection = new Backbone.Collection();
feedCollection.set(myFeedJSON.nestedObject.nestedArrayIWant);