Angularjs Breezejs-为什么不';对非标量或复杂数据属性的更改是否会触发更改事件?

Angularjs Breezejs-为什么不';对非标量或复杂数据属性的更改是否会触发更改事件?,angularjs,breeze,Angularjs,Breeze,我在Breeze中使用非标量和复杂的数据属性。它们工作正常,只是在非标量属性中添加或删除项时,或者在复杂属性上更改属性时,不会触发EntityChanged和PropertyChanged事件 当非标量或复杂属性发生更改时,如何获得通知 manager.metadataStore.addEntityType({ shortName: 'Thing', namespace: namespace, dataProperties: { id: {

我在Breeze中使用非标量和复杂的数据属性。它们工作正常,只是在非标量属性中添加或删除项时,或者在复杂属性上更改属性时,不会触发EntityChanged和PropertyChanged事件

当非标量或复杂属性发生更改时,如何获得通知

manager.metadataStore.addEntityType({
    shortName: 'Thing',
    namespace: namespace,
    dataProperties: {
        id: {
            dataType: breeze.DataType.Guid,
            isPartOfKey: true
        },
        strings: {
            dataType: breeze.DataType.String,
            isScalar: false
        },
        object: {
            dataType: new breeze.ComplexType({
                shortName: 'Object',
                namespace: namespace,
                dataProperties: {
                    a: { dataType: breeze.DataType.String },
                    b: { dataType: breeze.DataType.String }
                }
            })
        }
    }
});

对标量数据属性实例(即原语和complexType)的更改会在父实体上引发更改事件。对非标度数据属性的更改会在关联集合上引发“arrayChanged”事件。 见:


如果我错了,请纠正我的错误,但只有当我更改整个实体时,我才会得到事件,即thing.object={};如果我更改了复杂类型的属性,则不会有事件:thing.object.a='hello!'没有引起任何事件。对于非标量数据类型,我知道我可以侦听arrayChanged事件,但这是否违背了其他地方的建议,即使用entityChanged事件来避免内存泄漏?()否,对于标量复杂类型的属性的更改,您应该看到在父级上激发的propertyChanged事件。看,我不能让它工作。请看这个plunker:-当创建标量复杂类型时,我只得到一个事件,然后什么都没有。我做错了什么?如果更改文本框,您会收到一条消息,说明属性“obj”已更改,然后什么也没有更改。