我从服务器接收一些复杂类型,我想将它们转换为复杂类型的数组。没有从服务器返回的 foreignKey 将 complexType 映射回父实体,并且由于可以返回的数据量很大,我不想创建 jsonResultsAdapter 来映射属性,因为它增加了额外的处理时间。
我可能没有正确执行此操作,但我正在以这种方式添加 complexType -
metadataStore.addEntityType({
shortName: "Parent",
namespace: "MyNameSpace",
dataProperties: {
id: { dataType: "Int64", isPartOfKey: true },
name: { dataType: "String" },
complexChildren: { complexTypeName: "ComplexChild:#MyNameSpace", isScalar: false }
}
});
metadataStore.addEntityType({
shortName: "ComplexChild",
namespace: "MyNameSpace",
isComplexType: true,
dataProperties: {
notAForeignKeyId: { dataType: "Int64" },
name: { dataType: "String" }
}
});
这很好用,我可以看到对象图中的对象,当它们从服务器返回时,我看到所有东西都被映射了,但是当我尝试将它视为一个简单的 observableArray 时,它会抛出错误 -
ko.utils.arrayForEach(parents(), function (parent) {
ko.utils.arrayForEach(parent.complexChildren(), function (child) {
if (child === aComplexIdiot) { }
});
});
在 knockout2.3.0.debug.js 的第 101 行引发错误。我不认为这是一个微风问题,因为一切都得到了正确处理,所以我认为这就是我映射 complexType 的方式,它只是没有太多意义为什么会发生,我不想除非我必须,否则开始创造变通方法。