我们创建了一个complextype(Carrier field)对象数组。见下面的元数据
{ shortName : 'Person',
namespace : 'Demo',
autoGeneratedKeyType : breeze.AutoGeneratedKeyType.Identity,
"dataProperties": [
{
"name": "carriers",
"complexTypeName":"Carrier:#Test",
"isScalar":false
}]
}
Carrier实体的定义如下:
{
"shortName": "Carrier",
"namespace": "Test",
"isComplexType": true,
"dataProperties": [
{
"name": "Testing",
"isScalar":true,
"dataType": "String"
}
]
}
我们为上述实体提供了以下匹配数据:
{
carriers: [
{
Testing : 'InputBox1'
},
{
Testing : 'InputBox2'
}
]
}
我们尝试使用以下方法将complextype对象(Carrier)动态添加到上面的carrier数组中:
var test = {
"Testing" : "Test"
};
var result = manager.createEntity('Carrier', test);
上面的代码在行号12457的breeze.debug.js中抛出异常(undefined不是函数)(见下面的代码)
entity = entityType.createEntity(initialValues);
抛出异常,因为complextype实体没有' createEntity'功能在其中。
我们在这里缺少什么?
答案 0 :(得分:0)
很好的问题 - 抱歉,我没有机会早点解决这个问题。
添加complexType对象时,需要使用createInstance()方法而不是createEntity。
var thisEntityType = manager.metadataStore.getEntityType('Carrier');
var thisEntity = thisEntityType.createInstance(initialValues);
基本上,您获取complexType,然后使用您想要分配的值创建它的实例。请记住,初始值当然应该是哈希对象。通常我会包含一个辅助函数来为我这样做 -
function createComplexType(entityType, constructorProperties) {
var thisEntityType = manager.metadataStore.getEntityType(entityType);
var thisEntity = thisEntityType.createInstance(constructorProperties);
return thisEntity;
}