我正在使用Knockout和breezejs实现一个表单,我希望在用户更改焦点时保存每个字段。因此,每次更改都意味着对服务器的一次保存调用问题是,如果用户在上一次保存调用完成时进行了一些更改,那么当服务器响应时,第一次调用中未包含的更改将恢复为原始值。
这是我的经理的配置:
var manager = new breeze.EntityManager({
serviceName : "/api/UserCentre/",
saveOptions: new breeze.SaveOptions({allowConcurrentSaves: true})
});
manager.enableSaveQueuing(true);
答案 0 :(得分:2)
删除saveOptions
,你会没事的。 “SaveQueuing”和allowConcurrentSaves
是竞争方法。
我强烈反对使用allowConcurrentSaves
,因为它可能导致不稳定的数据库插入和更新。这就是默认为false
的原因。这是一个我从未感到舒适使用的高级功能。
“SaveQueuing”是专为您的场景设计的插件。它作为单独的JS文件( breeze.savequeuing.js )作为样本的一部分提供。它将客户端应用程序保存请求排队,确保每个请求仅在前一个请求完成后发出。无论如何都不是万无一失的;他们是可以绊倒你的边缘条件。但这是我们发现的最好的方法,可以像你一样经常自动保存。