2013-04-16 36 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