2013-04-16 4 views
1

Я реализую форму с использованием Knockout и breezejs, я хочу сохранить каждое поле, когда пользователь меняет фокус. Таким образом, каждое изменение подразумевает один вызов сохранения на сервер. Проблема в том, что если пользователь выполняет некоторые изменения во время выполнения предыдущего вызова сохранения, изменения, которые не были включены в первый вызов, восстанавливаются до их первоначальных значений, когда сервер отвечает.Немедленное автоматическое сохранение с ветерком

Это конфигурация моего менеджера:

var manager = new breeze.EntityManager({ 
    serviceName : "/api/UserCentre/", 
    saveOptions: new breeze.SaveOptions({allowConcurrentSaves: true}) 
}); 
manager.enableSaveQueuing(true); 

ответ

2

Снимите saveOptions и вы будете в порядке. «SaveQueuing» и allowConcurrentSaves - это конкурирующие подходы.

Я категорически не рекомендую использовать allowConcurrentSaves, так как это может привести к нестабильной вставке и обновлениям базы данных. Вот почему он по умолчанию равен false. Это действительно расширенная функция, которую мне никогда не нравилось.

«SaveQueuing» - это плагин, разработанный для вашего сценария. Он поставляется в виде отдельного JS-файла (breeze.savequeuing.js) в качестве части образцов. Он ставит в очередь запросы на сохранение клиентских приложений, гарантируя, что каждый запрос выдается только после завершения предыдущего. Это не безошибочно. их краевые условия, которые могут вас тронуть. Но это лучший подход, который мы обнаружили для автоматического сохранения часто, как вы это делаете.

+0

Спасибо за ответ, но он все еще не работает. Когда пользователь вносит изменения в поле, на сервер отправляется вызов. Если пользователь делает другое изменение до завершения первого вызова, измененное значение изменяется с исходным значением при завершении первого вызова. – jvrdelafuente

+0

Я не знаю, почему ответ сервера изменяет мою сущность, если она находится в moddified состоянии. Этого не должно быть, потому что менеджер настроен на сохранение изменений по умолчанию. – jvrdelafuente