Попытка составить базовое решение для очистки грязного javascript, в конечном итоге становится болезненным занятием.Конечно, я делаю что-то не так, но не могу найти решение.данные содержат множество гаражей, которые имеют вложенную модель CarsType со следующими атрибутами (имя, описание).Каждый тип автомобиля используется один раз в гараже, но его можно найти во многих гаражах.carType сортируются произвольно для каждого гаража, поэтому таблица отношений car_type / garage name pack определяется следующим образом |id |garage_id |car_type_id |position |
Каждый тип машины присваивается множеству механиков.Каждый механик может работать во многих гаражах.таким образом, третий вложенный уровень - это таблица отношений mechanic_pack | mechanic_id | pack_id |
Backend - это рельсы 3.1, которые выплевывают Json.
Garage = Backbone.RelationalModel.extend({
relations: [
{
type: Backbone.HasMany,
key: 'Packs',
relatedModel: 'pack',
collectionType: 'Packs',
reverseRelation: {
key: 'garage',
includeInJSON: 'id'
}
}
],
initialize: function(attributes) {
this.fetchRelated("packs");
},
url : function() {
var base = 'garages';
if (this.isNew()) return base;
return base + (base.charAt(base.length - 1) == '/' ? '' : '/') + this.id;
}
///... more method ...
});
наборов пакетов определен в другом файле
Packs= Backbone.Collection.extend({
model: Pack,
url: '/packs/list/:garage_id'
});
модель загружается правильно, но fetchRelated не извлекает и не выдает никаких ошибок.Точка останова в Firebugs показывает, что toFetch всегда неопределен
fetchRelated: function( key, options ) {
options || ( options = {} );
var rel = this.getRelation( key ),
keyContents = rel && rel.keyContents,
toFetch = keyContents && _.select( _.isArray( keyContents ) ? keyContents : [ keyContents ], function( item ) {
var id = _.isString( item ) || _.isNumber( item ) ? item : item[ rel.relatedModel.prototype.idAttribute ];
return id && !Backbone.Relational.store.find( rel.relatedModel, id );
}, this );
if ( toFetch && toFetch.length ) {
......
Как мне вызвать fetchRelated?
2-й вопрос: Когда запрашивается гараж, рельсы отправляют полное деревовложенные модели.Есть ли способ заполнить вложенные модели backones из исходного ответа JSON?и быть в состоянии управлять каждой вложенной моделью с их собственным представлением?