Как узнать, когда модель изменилась на лицевой стороне с помощью Backbone?

0

Я, вероятно, не понимаю некоторые логические схемы Backbone и надеюсь, что вы сможете объяснить это мне.

Когда я создаю модель, передаю ей идентификатор и затем извлекаю его, Backbone маркирует модель как измененную (вызов changedAttributes() возвращает все атрибуты объекта).

Когда вы изменяете атрибут объекта на лицевой стороне, он также маркирует модель как измененную с changedAttributes() только этого атрибута changedAttributes().

Итак, как вы делаете разницу между изменениями, сделанными на лицевой стороне (а значит, не сохраняются) и изменениями, которые происходят с сервера? (Есть ли какие-то конкретные события?)

Причина, почему я спрашиваю об этом, это то, что я хотел бы сохранить свою модель, временами, если есть некоторые изменения в лицевой части или если пользователь завершает работу.

[edit] Мой сценарий (я работаю с Угловым):

URL моей страницы имеет вид: object/#/: id

Моя страница является редактором для объекта (некоторые входы).

Когда идентификатор в URL изменяется, я получаю соответствующий объект с сервера. Но если бы уже было что-то (например, если пользователь вручную изменил ID), мне нужно сохранить все, что было сделано на объекте в первую очередь.

  • 0
    Документация говорит: « атрибуты модели, которые изменились с момента последнего набора ». Таким образом, вы тот, кто вызывает методы set / internal, которые вызывают set. Как вы можете не знать, изменились ли данные модели или нет? Можете ли вы привести пример сценария?
  • 0
    Я обновил пост. Надеюсь, это поможет. Что я не могу понять, так это когда состояние модели установлено в «чистый» (или «неизменный»), если не после выборки.
Показать ещё 1 комментарий
Теги:
backbone.js

1 ответ

2
Лучший ответ

Нет реального отслеживания изменений модели/коллекции в Backbone, что говорит вам, что или что-то изменилось. Вы должны сделать это самостоятельно.

Конечно, вы можете проверить изменения текущего цикла изменений. Поэтому в обработчике событий вы используете like model.on("change",() =>...). Возможно, вы захотите реализовать функцию обработчика, которая отслеживает изменение и, возможно, сбросит его, после того, как вы сохранили его на сервере

Ещё вопросы

Сообщество Overcoder
Наверх
Меню