2014-10-28 107 views
1

我们已经创建了一个complextype(Carrier字段)对象的数组。请参见下面的元数据如何将一个复杂类型对象动态添加到数组中

{   shortName : 'Person', 
      namespace : 'Demo', 
      autoGeneratedKeyType : breeze.AutoGeneratedKeyType.Identity, 
    "dataProperties": [ 
     { 
      "name": "carriers", 
      "complexTypeName":"Carrier:#Test", 
      "isScalar":false 
     }] 
} 

开利实体的定义如下:

{ 
    "shortName": "Carrier", 
    "namespace": "Test", 
    "isComplexType": true, 
    "dataProperties": [ 
     { 
      "name": "Testing", 
      "isScalar":true, 
      "dataType": "String" 
     } 
    ] 
    } 

我们已经为上述实体下列匹配数据:

{ 
    carriers: [ 
      { 
       Testing : 'InputBox1' 
      }, 
      { 
       Testing : 'InputBox2' 
      } 
      ] 
} 

我们正试图动态添加通过使用以下方法将复合类型对象(Carrier)传送到上述载流子阵列:

var test = { 
       "Testing" : "Test" 
      }; 

      var result = manager.createEntity('Carrier', test); 

上面的代码抛出异常(未定义不是函数)在行号12457内部breeze.debug.js(见下面的代码)

entity = entityType.createEntity(initialValues); 

的抛出异常,因为的complexType实体不具有'createEntity'功能。

我们在这里失踪了什么?

回答

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; 
} 
+0

这样做了!非常感谢你! – Gopin 2014-10-29 18:25:31

相关问题