Backbonejs: как отслеживать изменения модели, которые не синхронизированы с сервером? - PullRequest
1 голос
/ 17 ноября 2011

У меня есть форма, которая обновляет мою модель событиями изменения, выполняющими множество set методов.

model.set({Name: newname });

то же самое может быть достигнуто автоматически с помощью замечательного плагина для привязки моделей Дерика Бэйли

в любом случае модель постоянно обновляется при смене формы. НО, если я не нажму кнопку сохранения, которая фактически выполняет вызов model.save();, ни одно из этих изменений никогда не попадет в базу данных.

Таким образом, если теперь я ухожу от формы через:

  • кнопка возврата из браузера
  • другие кнопки в навигации, открывающие другой вид

сразу понятно, модель была сохранена с новым именем, но никогда не сохранялась в базе данных (обновление с помощью F5 показывает, что)

Я ищу полезное решение этой проблемы до сих пор я думал о:

  • добавление model.save() к любому событию размытия элемента формы (все равно вызовет много вызовов сохранения на сервере только для одной модели *, не идеально
  • пытается взломать в сейве на выходе из формы * не идеально
  • пытается восстановить модель в исходное состояние (сброс модели или аналогичный)

* не идеально. : пользователь отказывается от формы, указывая на свое желание НЕ сохранять свои данные, и здесь я все равно пытаюсь взломать сохранение.

Как мне добиться этого, сбросив модель до того состояния, в котором она находилась до изменения формы.

1 Ответ

1 голос
/ 17 ноября 2011

Если хотите, вы можете сохранить исходное состояние модели. Но реальное решение, которое вы ищете, это позвонить set вместо save. Он выполнит вашу проверку без синхронизации с вашим постоянным слоем (т. Е. С базой данных). Это также вызовет событие change, чтобы ваш взгляд реагировал соответствующим образом. Затем, когда вы будете готовы сохранить, вы можете.

...