Breeze实体经理“hasChanges”属性 - 如何找出触发“真实”状态的内容?

时间:2013-12-12 10:10:36

标签: breeze

我的datacontext中有以下事件处理程序:

    manager.hasChangesChanged.subscribe(function (eventArgs) {
        hasChanges(eventArgs.hasChanges);
    });

在Chrome中,我在“haschanges(eventArg.haschanges);”上设置了一个断点。线。

当我加载我的应用程序并开始获取数据的过程时,此断点被点击。然后它会重复命中,“hasChanges”属性在“true”和“false”之间多次变化。

我从进一步的调试断点中得知,通过其导航属性“扩展”相关表的简单查询会触发访问我的“hasChangesChanged”事件处理程序。

我不知道 - 因为“eventArgs”是如此庞大和复杂 - 正是我检索的5个左右相关实体中的哪一个正在触发“hasChanges”属性中的“true”。在eventArgs中是否有一个属性我可以检查以确定哪个当前实体导致了hasChangesChanged事件处理程序的行程?

我很困惑为什么我正在做的是将“hasChanges”设置为true,因为我在第一个实例中所做的就是检索数据。据我所知,实体经理确信某些事情发生了变化,一切都没有改变。

为了详细说明,我的应用程序预取了大量用于树结构的数据,这些数据位于等待用户第一次输入的位置。由于此时用户还没有机会触摸应用程序中的任何内容,为什么微风会认为任何相关实体在从数据库中读入时都已被更改?

1 个答案:

答案 0 :(得分:1)

如果您需要有关已更改内容的细粒度信息,请使用 EntityManager.entityChanged 事件。此事件提供了更多细节,但更频繁地触发。

http://www.breezejs.com/sites/all/apidocs/classes/EntityManager.html