Как создать коллекцию/модель из вложенного 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);