首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将实体编辑回原来的值时,hasChanges()

将实体编辑回原来的值时,hasChanges()
EN

Stack Overflow用户
提问于 2016-01-22 16:24:09
回答 1查看 199关注 0票数 2

我有一个关于微风实体的变化检测的问题。

假设我有一个处于Changed状态的实体,因为它的一个字符串属性已经更改(例如,从'hello''hello2' )。

如果我将该属性更改为初始值'hello',则期望hasChanges()返回到Unchanged。但遗憾的是,这个国家仍然是Changed

这是预期的行为吗?如果是这样的话,有没有办法让Breeze使用它的originalValues散列图来检查真正的变化而不是“肮脏”呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-22 19:00:06

有趣的问题。我不认为有一种方法可以根据比较来计算hasChanges,但是您可能可以把一些东西组合在一起。

originalValues哈希映射只包含微风认为实体已更改的属性。因此,您可以编写一个小函数来激发entityChanged事件并进行比较,如果没有差异,则将entityState设置为未修改的。

类似于:

代码语言:javascript
运行
复制
em.entityChanged.subscribe(function(changeArgs) {
    var action = changeArgs.entityAction;
    var entity = changeArgs.entity;
    var ovs = entity.entityAspect.originalValues
    if (action == breeze.EntityAction.PropertyChange) {
        for (var prop in ovs) {
            if (prop in entity) {
                 // As soon as a non-matching property is discovered,
                 // then 'Modified' is the appropriate state, so exit
                 if (entity[prop] !== ovs[prop]) return;
            }
        }
        // all the properties are the same.  mark it unchanged
        entity.entityAspect.setUnchanged();
    } 
});

这是我头上的东西。目前我没有一个环境来测试它,所以我不确定我是否会相信代码的原样。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34951351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档