Breeze问题与complexType更改跟踪

时间:2015-04-01 15:28:35

标签: breeze

我在我的应用程序中使用Angular和Breeze,然后使用" hasChangesChanged"用于处理存储在EntityManager中的实体状态的事件。当我的实体属性为complexType且isScalar = false时,我遇到了问题。 当我提出两次请求(不更改任何实体)并获得相同的实体时,会出现问题。第二次请求" hasChangesChanged"使用hasChanges = true触发事件。 在此事件被触发的那一刻,我的实体具有状态"已修改",但是在加载数据之后该状态被更改为"未更改"。

我写过(Jasmine)单元测试。在评论中是断言引发错误的信息。

    var entity,
        hasChanges = false,
        listeners = {
            onChange: function (event) {
                console.log('change', event.hasChanges);
            }
        };
    spyOn(listeners, 'onChange');

    $httpBackend.expectGET('json/SampleEntity?').respond(200, [
        {
            id: 1,
            name: 'some name',
            data: {},
            $type: 'SampleEntity',
            elements: [
                {
                    etype: 'el1'
                }
            ]
        }
    ]);
    manager.hasChangesChanged.subscribe(function (event) {
        hasChanges = event.hasChanges;
    });

    var query = new breeze.EntityQuery('SampleEntity');
    manager.executeQuery(query).then(function (data) {
        entity = data.results[0];
    });


    $httpBackend.flush();

    expect(hasChanges).toBe(false); // OK
    expect(entity.entityAspect.entityState.isUnchanged()).toBe(true); // OK

    $httpBackend.expectGET('json/SampleEntity?').respond(200, [
        {
            id: 1,
            name: 'some name',
            data: {},
            $type: 'SampleEntity',
            elements: [
                {
                    etype: 'el1'
                }
            ]
        }
    ]);
    manager.executeQuery(query).then(function (data) {
        entity = data.results[0];
    });
    $httpBackend.flush();

    expect(hasChanges).toBe(false); // ERROR
    expect(entity.entityAspect.entityState.isUnchanged()).toBe(true); // OK

这是预期的行为吗?如果不是我怎么解决它?

0 个答案:

没有答案