Как собрать коллекцию / модель из вложенного JSON с помощью Backbone.js - PullRequest
10 голосов
/ 09 января 2012

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

У меня есть JSON , как на картинке! Я видел некоторые Ответы в связи с Backbone-реляционными, но все еще не понял смысл!

Как мне конвертировать JSON в коллекции / модели Backbone.js ??

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

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

[0]: это коллекция моделей

[clefs] + ... + [Rest]: коллекция моделей

(clefs) => [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});
} 
});

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

Nested Array

Ответы [ 3 ]

18 голосов
/ 09 января 2012

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

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

0 голосов
/ 14 октября 2013

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

var feedCollection = new Backbone.Collection();
feedCollection.set(myFeedJSON.nestedObject.nestedArrayIWant);
0 голосов
/ 09 января 2012

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

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

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

...