Я, вероятно, не понимаю некоторые логические схемы Backbone и надеюсь, что вы сможете объяснить это мне.
Когда я создаю модель, передаю ей идентификатор и затем извлекаю его, Backbone маркирует модель как измененную (вызов changedAttributes()
возвращает все атрибуты объекта).
Когда вы изменяете атрибут объекта на лицевой стороне, он также маркирует модель как измененную с changedAttributes()
только этого атрибута changedAttributes()
.
Итак, как вы делаете разницу между изменениями, сделанными на лицевой стороне (а значит, не сохраняются) и изменениями, которые происходят с сервера? (Есть ли какие-то конкретные события?)
Причина, почему я спрашиваю об этом, это то, что я хотел бы сохранить свою модель, временами, если есть некоторые изменения в лицевой части или если пользователь завершает работу.
[edit] Мой сценарий (я работаю с Угловым):
URL моей страницы имеет вид: object/#/: id
Моя страница является редактором для объекта (некоторые входы).
Когда идентификатор в URL изменяется, я получаю соответствующий объект с сервера. Но если бы уже было что-то (например, если пользователь вручную изменил ID), мне нужно сохранить все, что было сделано на объекте в первую очередь.
Нет реального отслеживания изменений модели/коллекции в Backbone, что говорит вам, что или что-то изменилось. Вы должны сделать это самостоятельно.
Конечно, вы можете проверить изменения текущего цикла изменений. Поэтому в обработчике событий вы используете like model.on("change",() =>...)
. Возможно, вы захотите реализовать функцию обработчика, которая отслеживает изменение и, возможно, сбросит его, после того, как вы сохранили его на сервере