Как создать коллекцию/модель из вложенного JSON с помощью Backbone.js

Я относительный новичок в Backbone.js

У меня есть JSON, как показано на рисунке! Я видел некоторые ответы по отношению к Backbone-relational, но все равно не понимаю!

Как я могу преобразовать этот JSON в коллекцию/модели Backbone.js?

Я обновляю код, но он не работает, как ожидалось! Я не вижу модель, когда я делаю:

Моя структура:

[0]: представляет собой набор моделей

[clefs] +... + [Rest]: представляют собой коллекцию моделей

(clefs) = > [0] +... + [9]: модели (название содержит строку, путь тоже)

Спасибо большое!

EDIT (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});
} 
});

это тоже помогло мне!

Nested Array

Ответ 1

Я работаю, поэтому я не могу дать вам полностью закодированный ответ, но суть в том, что вы можете сделать следующее в своих моделях верхнего уровня для достижения иерархии вложенных моделей:

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 Круто, мне бы хотелось увидеть его, когда закончите.

Ответ 2

Метод reset (см. 'reset') позволяет передать массив JSON в коллекцию. Это эквивалентно методу PUT, заменяя указанную коллекцию хэшем JSON.

Вы также можете использовать метод add для добавления в существующую коллекцию или передать хэш JSON в конструктор при создании новой коллекции.

Вам нужно будет выполнить некоторую базовую очистку вашего массива, чтобы получить его в соответствующем формате, а затем преобразовать его в JSON

Ответ 3

Я использую PHP, чтобы захватить фид как JSON, поскольку он находится в другом домене. Я сохраняю эти результаты в переменной JS, а затем я просто успел использовать ее, чтобы получить ее в моей коллекции Backbone...

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