我有一個簡單的微風/淘汰賽的SPA。我必須爲一個實體列表實現一個「單一保存」選項 - 編輯將在列表中完成,而不是在單獨的彈出窗口中完成。微風客戶端實體不更新後,服務器端更改
保存服務器將檢查只有實體的某些attrs被更新,並更新「最後更新日期」attr。
實體列表被一個實體管理器從服務器拉出。
啓用單個保存更新並準備保存的實體從主實體管理器導出並導入臨時實體管理器。執行保存並(如果可以)將對象重新導出並導回到主實體管理器中。
function saveSingle(entity)
{
var tempMgr = MainEntityManager.createEmptyCopy();
var exp = MainEntityManager.exportEntities([entity]);
tempMgr.importEntities(exp, {
mergeStrategy: breeze.MergeStrategy.PreserveChanges });
tempMgr.saveChanges()
.then(function (saveResult) {
var reImp = tempMgr.exportEntities();
MainEntityManager.importEntities(reImp);
entity.Last_Updated_Date(saveResult.entities[0].Last_Updated_Date());
entity.entityAspect.entityState = breeze.EntityState.Unchanged;
logger.success("changes saved");
})
.fail(function() {
logger.error("Single Save failed: " + error.message);
});
}
但是,它看起來像新的「最後更新日期」的價值沒有得到後的再出口/進口保存回MainEntityManager過程中複製過來。我已經解決了這個問題,但是我想知道在這個實現中是否做了錯誤的事情,以及是否有更好的方法來構造「單一實體保存」功能?
評論和問題歡迎!