我正在与 Breezejs 合作。假设我有一个dummy
填充了一些数据的可观察实体。用户description
通过html页面上的输入框修改了这个实体的属性。用户可能还在页面上的其他输入框中修改了此实体的其他属性。我的实体的 entityState 就是Modified
此时。接下来我执行一些检查,只需要通过代码撤消对此description
属性的修改。
如果这是唯一的修改,那么我想让我的 entityState 成为Unchanged
如果对此实体有其他修改,那么我想保持原样并仅撤消该description
属性。
为什么我需要那个?当页面上有一些未决的修改时,我会显示Save
和Cancel
按钮。如果只有 1 处修改并且我撤消了它,那么启用按钮是不合逻辑的Save
。Cancel
可能吗?
谢谢。
更新
这是我的实际实现:
private tryReject() {
// if any modified values are the same as original values >> reject
var rejectPossible = true;
for (var name in this.dummy().entityAspect.originalValues) {
var oldVal = this.dummy().entityAspect.originalValues[name];
var newVal = this.dummy()[name]();
if (oldVal != newVal) rejectPossible = false;
}
if (rejectPossible) this.dummy().entityAspect.rejectChanges();
}
也许有一种聪明或更干净的方法?