Ответ 1
Это может быть полезно в вашем случае: https://github.com/PaulUithol/Backbone-relational
Вы задаете отношения 1:1, 1: n, n: n и соответственно обрабатываете JSON. Он также создает глобальный магазин для отслеживания всех записей.
Я столкнулся с головной болью с помощью Backbone. У меня есть коллекция указанных записей, у которых есть субректоры, например: у хирургов есть запланированные процедуры, процедуры имеют оборудование, у какого-то оборудования есть потребляемые потребности (газы, жидкости и т.д.). Если у меня есть хирург-каркас, то у каждого хирурга есть модель, но его процедуры и оборудование и расходные материалы станут очевидными массивами и объектами Javascript после их распаковки из JSON.
Я полагаю, что в SurgeonsCollection я могу использовать parse() для создания новых ProcessCollections и, в свою очередь, создавать новые EquipmentCollections, но через некоторое время это превращается в шарик. Чтобы сделать его разумным на стороне сервера, есть единственная точка контакта, которая берет одного хирурга и его вещи как POST - поэтому распространение "набора" на Расходуемой модели автоматически, чтобы вызвать "сохранение" вниз по иерархии, также делает весь иерархический подход нечеткая.
Кто-нибудь еще сталкивался с такой проблемой? Как вы его решили?
Это может быть полезно в вашем случае: https://github.com/PaulUithol/Backbone-relational
Вы задаете отношения 1:1, 1: n, n: n и соответственно обрабатываете JSON. Он также создает глобальный магазин для отслеживания всех записей.
Итак, один из способов решения этой проблемы - сделать следующее:
Пусть все модели наследуются от настраиваемого BaseModel и помещают в BaseModel следующую функцию:
convertToModel: function(dataType, modelType) {
if (this.get(dataType)) {
var map = { };
map[dataType] = new modelType(this.get(dataType));
this.set(map);
}
}
Переопределите Backbone.sync и сначала разрешите сериализацию модели, как обычно:
model.set(response, {silent: true});
Затем проверьте, имеет ли модель функцию onUpdate:
if (model.onUpdate) {
model.onUpdate();
}
Затем, всякий раз, когда у вас есть модель, которую вы хотите сгенерировать подмодели и подколлекции, реализуйте onUpdate в модели с чем-то вроде этого:
onUpdate: function() {
this.convertToModel('nameOfAttribute1', SomeCustomModel1);
this.convertToModel('nameOfAttribute2', SomeCustomModel2);
}
Я бы выделил разных хирургов, процедур, оборудования и т.д. как разные ресурсы в вашем веб-сервисе. Если вам нужно только обновить оборудование для конкретной процедуры, вы можете обновить эту процедуру.
Кроме того, если вы не всегда нуждались во всей информации, я бы также лениво загружал данные по мере необходимости, но отправлял полностью заполненные объекты там, где это необходимо для повышения производительности.