我正在做一个热毛巾项目,我想格式化一些从数据库传递到Breeze的数据,但看起来ctor没有注册。
我做错了什么?
在datacontext.js中
var manager = configureManager();
function configureManager() {
var mng = new breeze.EntityManager('breeze/data');
breeze.NamingConvention.camelCase.setAsDefault();
model.configureMetadataStore(mng.metadataStore);
return mng;
}在model.js中
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()调用。
发布于 2013-06-10 07:52:28
当我构造一个实体时,我的构造函数需要有一个实体来构造。我没有尝试过你上面的代码,但我相信Breeze传入了一个实体,你需要给那个实体赋予属性。使用这个。可能行得通,但这是第一件让我印象深刻的事情。
function userInfoInitializer(user) {
if (user.Email == "")
user.Email = "---";第二-在你的模型中你的实体是什么名字?是UserInfo还是User?您可能已经知道这一点,但您需要确保在添加构造函数时使用正确命名的实体。
3-如果您使用的是camelCase,那么您需要保留属性的第一个字母小写。例如。user.email和user.createDate。
最后,我不知道你是在构造函数中创建一个'createDate‘,还是从你的模型中传递过来的。如果它确实是您正在创建的属性,我建议您将其设置为击倒、可观察或计算的属性。如果它来自数据库,那么您需要执行如下操作
if (!user.createDate) { } //set it 请记住,从数据库返回的所有实体都将具有该属性,因此,如果您的示例中有已经具有createDate的实体,则您将覆盖该日期。如果你想将createDate设置为now,那么我会将它移到你的方法中,在那里你正在创建对象。
https://stackoverflow.com/questions/17009070
复制相似问题