Чтобы быть в состоянии сделать это до для вашего back-end - на самом деле это не имеет ничего общего с Backbone.
Можете ли вы настроить свою внутреннюю технологию для возврата связанных моделей в виде вложенных ресурсов?
Если фоновым является Rails, например, и ваши модели связаны в ActiveRecord, один из способов сделать это что-то вроде
respond_to do |format|
format.json { render :json => @model.to_json(:include => [:submodels])}
end
Что фоновым технологии вы используете?
Edit:
К сожалению, не понял суть вашего вопроса, как только вы получили Админцетр, возвращая JSON в правильном формате, да, есть вещи, которые нужно сделать в позвоночником быть в состоянии справиться с этим.
Магистральная-реляционная
Один из способов борьбы с ним использовать Backbone-Relational, плагин для обработки связанных моделей.
определяется родственные модели через свойство «отношения»:
SubModel = Backbone.RelationalModel.extend({});
SubCollection = Backbone.Collection.extend({
model: SubModel
});
Model = Backbone.RelationalModel.extend({
relations: [
{
type: 'HasMany',
key: 'submodels',
relatedModel: 'SubModel',
collectionType: 'SubCollection'
}
]
});
Когда модель выбирает JSON, он автоматически создаст подколлекцию под свойством «подмоделями» и заселить его с Подмоделью - по одному для каждого JSON в массиве.
jsfiddle для позвоночника-реляционные: http://jsfiddle.net/4Zx5X/12/
Рукой
Вы можете сделать это вручную, если вы хотите, как хорошо. В переопределяю функцию parse для класса модели (простите, если мой JS не 100% правильно - делали CoffeeScript так много в последнее время его зашит в моем мозге)
var Model = Backbone.Model.extend({
parse: function(response) {
this.submodels = new SubCollection();
// Populate your submodels with the data from the response.
// Could also use .add() if you wanted events for each one.
this.submodels.reset(response.submodels);
// now that we've handled that data, delete it
delete response.submodels;
// return the rest of the data to be handled by Backbone normally.
return response;
}
});
разобрана() запускается до инициализации() и перед установкой хэша атрибутов, поэтому вы не можете получить доступ к параметрам model.attributes, а model.set() не удается, поэтому мы должны установить коллекцию как прямое свойство модели, а не как «свойство», которое вы будет доступ с помощью get/set.
В зависимости от того, что вы хотите совершить на «save()», вам может потребоваться переопределить `toJSON ', чтобы ваша сериализованная версия модели выглядела так, как ожидает ваш API.
jsfiddle:
http://jsfiddle.net/QEdmB/44/
хорошо ... фоновый ручная работа CPP (и нет способа изменить его Rails или Django) :), но, насколько я понял, ваше решение будет форматировать ответ, как JSON, данный в моем вопросе ... поэтому, магистраль не будет интерпретировать объекты в массиве «подмоделей» как подмодели ... я прав? –
Вариант с базой-реляцией не работает корректно, потому что массив «подмоделей» становится массивом объектов, а не SubModels, я немного проверил вашу скрипку, посмотрите, пожалуйста, http://jsfiddle.net/4Zx5X/3/ –
Хорошо, я попробую по настоящему ajax-запросу. В любом случае, спасибо за подробный ответ! –