我在durandal项目中工作并使用breeze实体。
在我的项目中,我需要创建客户端实体,并在创建时提供initialValues。
通常,您想要将initialValues赋予新实体,并将其传递给createEntity函数。
例如:
dataContext.createEntity('employee', {age:40, city:'OurCity'});
因此,您将获得具有年龄和城市默认数据的新员工空实例。 我想用包含complexFields的实体类型来做。 但它不起作用。
我的实体是客户实体。
以下是代码:
addFormType(store);
function addFormType(store) {
store.addEntityType({
shortName: "FormDTO",
autoGeneratedKeyType: AutoGeneratedKeyType.Identity,
dataProperties: {
key: {//auto primary key. numeratorA and Code cannot be key, becose for new records thier aren't unique
dataType: DataType.Int32, isNullable: false, isPartOfKey: true
}
TaxYear: {
dataType: DataType.String, validators: [Validator.required({ message: 'דרוש' })]
},
Unit_A: {
name: "FormUnit_A",
complexTypeName: 'FormUnit_A:#'
}
}
});
store.registerEntityTypeCtor("FormDTO", null, FormInit);
}
function FormInit(entity) {
validationHelper.initializer(entity);
}
addFormUnit_AType(store);
function addFormUnit_AType(store) {
store.addEntityType({
shortName: "FormUnit_A",
isComplexType: true,
dataProperties: {
CompanyName: {
dataType: DataType.String
},
CompanyAddress: {
dataType: DataType.String
}
}
});
store.registerEntityTypeCtor("FormUnit_A", null, null);
}
我尝试通过以下行来初始化它:
var defaultData = {
TaxYear:0,
Unit_A:{
CompanyName:'ourCompany',
CompanyAddress:'Zar 200 OurCity'
}
};
clientManager.createEntity('FormDTO', defaultData);
但它抛出异常:“对象不支持属性或方法'getProperty'”
我还试图传递一个包含所有属性的单层对象:
var defaultData = {
TaxYear:0,
CompanyName:'ourCompany',
CompanyAddress:'Zar 200 OurCity'
};
clientManager.createEntity('FormDTO', defaultData);
但它抛出异常:对象不支持属性或方法'CompanyName'
那么使用initialValues创建实体的正确方法是什么?实体包含复杂类型?
答案 0 :(得分:0)
根据您项目中的工作原理,您可能会使用像camelCase策略来命名客户端属性。如果不是这样,请原谅这个答案。
如果是这种情况,那么为什么在创建复杂类型时不使用camelCased属性?看起来很简单 -
var defaultData = {
taxYear:0,
unit_A:{
companyName:'ourCompany',
companyAddress:'Zar 200 OurCity'
}
};
clientManager.createEntity('FormDTO', defaultData);