breezejs:仅适用于已添加实体的registerEntityTypeCtor?

时间:2013-04-23 08:52:15

标签: breeze

我已经使用registerEntityTypeCtor函数在创建实体时添加一些初始化代码。但是,无论实体的状态如何(添加vs已更改vs已分离等等)

,此代码都会被触发

我希望registerEntityTypeCtor中的初始化代码仅应用于状态为Added的Entity。问题是实体的状态仅在调用定制构造函数之后设置。我可以做些什么来解决这个问题?

 function configureMetadataStore(metadataStore) {
        metadataStore.registerEntityTypeCtor('Mandate', function () {
            this.blah = 'test';
        }, mandatInitializer);

        //Validator.register(someValidator);
        logger.info('Validators applied');
    }

    function mandatInitializer(mandat) {     
        mandat.TransactionType = '0';
        mandat.Status = '0';
        mandat.NextSequenceType = '0';
        mandat.MandateType = '0';
    }

1 个答案:

答案 0 :(得分:1)

方法registerEntityTypeCtor有三个输入参数:实体名称,构造函数和初始化方法。我认为您可以使用第三个参数仅在添加的实体中进行初始化。

dtContext.metadataStore.registerEntityTypeCtor(entityName, constructor, initializerMethod);

--- --- EDIT

您可以在initializerMethod:

中检查id是否为unefined
function initializerMethod(entity){
  if(entity.id()===unefined || entity.id()=== null){
    //Do things that you want with the new entity
    //...
    //Initilize the id with a temporal value that would be override in the server side.
  }
}