breeze:跟踪实体父级是否有变化的子项

时间:2014-02-11 16:08:44

标签: breeze

我有一个带有导航属性的父实体。如果修改了集合中的任何子节点,则将子节点的entityState设置为modified,但父节点的entityState保持不变。

我需要在屏幕上显示一个视觉指示,以显示对父实体进行了一些修改,即使修改是在np集合中的子项上进行的。

我不能使用hasChangesChanged,因为它太通用了。我只需要在父实体本身或np集合中的一个实体上进行更改时设置可视指示器。

有没有简单的方法可以做到这一点,还是我必须手动注意修改?

1 个答案:

答案 0 :(得分:1)

显然我没有点击我的其他答案,但你要做的是要跟踪对子实体的更改。您需要“手动”订阅这些更改,因为我不知道开箱即用来观察整个对象图。 (请记住,这可能是巨大的,并产生不利影响)

我之前使用的最佳选项(伪代码,使用Knockout但应该足够) -

使用其他未映射的属性初始化父级 -

        metadataStore.registerEntityTypeCtor('Person', null, personInitializer);

        function personInitializer(person) {
            person.hasChanges = ko.computed(function() { 
                ko.utils.arrayForEach(person.children(), function (child) {
                    child.entityAspect.propertyChanged.subscribe(function () {
                        // Do your logic here
                    });
                });
            });
        }

要记住的一件事是你要跟踪订阅,并确保在处理父对象时将其丢弃。

相关问题