Какова принятая стратегия для обеспечения того, чтобы модели, загруженные с сервера, а затем впоследствии измененные в пользовательском интерфейсе (т.е. ExtJS) и отправленные обратно на сервер, были сохранены правильно?
Проблема, которую мы видим в приложении, заключается в том, что модели могут быть сохранены без их правильной загрузки. Это может привести к сохранению неполных моделей.
например. На сервере модель имеет следующие свойства:
color: blue
size: 10
weight: 20
Пользователь загружает модель, а в процессе загрузки пользователь меняет
color: red
и сохраняет. В результате модель теряет свои весовые и размерные свойства на сервере. Обратите внимание, что это радикальное упрощение нашего сценария. Модели намного сложнее, а объем данных намного больше.
Стратегии, которые я могу придумать:
- Убедитесь, что все загружено, прежде чем разрешить пользователям сохранять (я думаю, что это не элегантно).
- Отслеживайте изменения в модели, сохраняйте только изменения. Это не потребует полной загрузки модели, поскольку только те вещи, которые пользователь активно редактирует, сохраняются обратно на сервер (не знаю, поддерживается ли это в ExtJS из коробки).
Может ли кто-нибудь указать мне правильное направление? Можно ли использовать Ext.data.Record.getChanges / isModified для реализации второго подхода? Как ExtJS обрабатывает удаления?