首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Breeze registerEntityTypeCtor不工作

Breeze registerEntityTypeCtor不工作
EN

Stack Overflow用户
提问于 2013-06-09 19:22:58
回答 1查看 585关注 0票数 0

我正在做一个热毛巾项目,我想格式化一些从数据库传递到Breeze的数据,但看起来ctor没有注册。

我做错了什么?

datacontext.js

代码语言:javascript
复制
    var manager = configureManager();

    function configureManager() {
        var mng = new breeze.EntityManager('breeze/data');
        breeze.NamingConvention.camelCase.setAsDefault();
        model.configureMetadataStore(mng.metadataStore);

        return mng;
    }

model.js

代码语言:javascript
复制
    function configureMetadataStore(metadataStore) {
        metadataStore.registerEntityTypeCtor
            ('UserInfo', null, userInfoInitializer);
    }

    function userInfoInitializer() {
        if (this.Email == "")
            this.Email = '---';

        this.CreateDate = formatDateTime(this.CreateDate);
    }

    function formatDateTime(DateTime) {
        return moment.utc(DateTime).format('DD. MM. YYYY. [у] hh:mm');
    }

Datacontext引用模型,数据从数据库传输并显示在屏幕上,但未格式化。未显示来自userInfoInitializer()console.log()调用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-10 07:52:28

当我构造一个实体时,我的构造函数需要有一个实体来构造。我没有尝试过你上面的代码,但我相信Breeze传入了一个实体,你需要给那个实体赋予属性。使用这个。可能行得通,但这是第一件让我印象深刻的事情。

代码语言:javascript
复制
function userInfoInitializer(user) {
    if (user.Email == "")
        user.Email = "---";

第二-在你的模型中你的实体是什么名字?是UserInfo还是User?您可能已经知道这一点,但您需要确保在添加构造函数时使用正确命名的实体。

3-如果您使用的是camelCase,那么您需要保留属性的第一个字母小写。例如。user.email和user.createDate。

最后,我不知道你是在构造函数中创建一个'createDate‘,还是从你的模型中传递过来的。如果它确实是您正在创建的属性,我建议您将其设置为击倒、可观察或计算的属性。如果它来自数据库,那么您需要执行如下操作

代码语言:javascript
复制
if (!user.createDate) { } //set it 

请记住,从数据库返回的所有实体都将具有该属性,因此,如果您的示例中有已经具有createDate的实体,则您将覆盖该日期。如果你想将createDate设置为now,那么我会将它移到你的方法中,在那里你正在创建对象。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17009070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档