是否可以拒绝对breeze对象的单个属性的更改而不拒绝对该对象的所有更改?
说我有
// assume manager is an EntityManager containing a number of preexisting entities.
var person = manager.createEntity("Person");
// assume Name and House are valid properties of a Person object
person.Name("Jon Snow");
person.House("Lannister");
但我仅想要放弃对对象House
属性所做的更改。
这是否可能,如果是这样,我将如何去做呢?
注意:我宁愿不迭代originalValues
属性,只需替换它们。我想,我正在寻找更优雅的解决方案,比如......
person.House.rejectChanges();
在属性本身或类似的东西上调用rejectChanges()
。
答案 0 :(得分:2)
由于缺乏更好的解决方案,我提出了以下代码,似乎符合我的目的:
function RevertChangesToProperty(entity, propertyName) {
if (entity.entityAspect.originalValues.hasOwnProperty(propertyName)) {
var origValue = entity.entityAspect.originalValues[propertyName];
entity.setProperty(propertyName, origValue);
delete entity.entityAspect.originalValues[propertyName];
if (Object.getOwnPropertyNames(entity.entityAspect.originalValues).length === 0) {
entity.entityAspect.setUnchanged();
}
}
}

答案 1 :(得分:0)
如果person.House
媒体资源有 entityAspect ,您可以在此媒体资源的entityAspect上调用rejectChanges()
。如果属性是对象,则属性具有entityAspect,具有其他属性。像string或Int这样的简单类型没有entityAspect,简单类型的属性只属于另一个对象
person.House.entityAspect.rejectChanges()