複合型の配列に変換したい複合型をサーバーから受け取りました。complexType を親エンティティにマップするためにサーバーから返されるforeignKeyはありません。返される可能性のあるデータが大量であるため、追加の処理が追加されるため、プロパティをマップするための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 行目でエラーをスローします。すべてが適切に処理されているため、これは Breeze の問題ではないと思います。complexType をマッピングする方法だと思います。なぜそれが起こっているのか、あまり意味がありません。必要がない限り、回避策の作成を開始します。