Любые рекомендации для глубоких структур данных с Backbone?
Я столкнулся с головной болью с помощью Backbone. У меня есть набор указанных записей, у которых есть субректоры, например: у хирургов есть запланированные процедуры, у процедур есть оборудование, у какого-то оборудования есть потребляемые потребности (газы, жидкости и т. Д.). Если у меня есть хирург-сборщик, то у каждого хирурга есть модель, но его процедуры и оборудование и расходные материалы станут очевидными массивами и объектами Javascript после их распаковки из JSON.
Полагаю, я мог бы в SurgeonsCollection использовать parse () для создания новых ProcessCollections и, в свою очередь, создавать новые EquipmentCollections, но через некоторое время это превращается в шарик. Чтобы сделать его разумным на стороне сервера, есть единственная точка контакта, в которой один хирург и его материал как ПОСТ – поэтому распространение «набора» на расходной модели автоматически, чтобы вызвать «сохранение» вниз по иерархии, также делает весь иерархический подход нечеткая.
Кто-нибудь еще столкнулся с такой проблемой? Как вы его решили?
- Магистральная маршрутизация с subviews
- Внешний ключ, заполненный объектом
- Backbone.js views delegateEvents не привязываются (иногда)
- Внешний шаблон html для underscore.js и backbone.js
- Загрузка файла с помощью базовой линии
- Откройте div на странице в новом окне, сохраняя при этом возможность обновлять его через websockets
- Переопределить сборку-выборку
- Backbone.js views - привязка события к элементу за пределами "el"
- Backbone.js извлекает фактические настройки атрибутов
- Не удается получить магистральные маршруты без хешей?
- BackboneJS лучший способ переупорядочить модели в коллекции при сохранении 0-индексированного ординального свойства для каждой модели
- Использование циклов в шаблонах магистрали / подчеркивания
- Замена события изменения модели базовой линии
Это может быть полезно в вашем случае: 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); }
Я бы выделил разных хирургов, процедур, оборудования и т. Д. Как разные ресурсы в вашем веб-сервисе. Если вам необходимо обновить оборудование только для определенной процедуры, вы можете обновить эту процедуру.
Кроме того, если вам не всегда нужна вся информация, я бы также лениво загружал данные по мере необходимости, но отправлял полностью заполненные объекты там, где это необходимо для повышения производительности.