「子」エンティティをロードするViewModelがあり、ロードされた各子に基づいて「孫」エンティティも表示したいと考えています。物事を単純化するために、これらのオブジェクトを照会し、ブラウザーの適切な「ツリー」の下に表示する方法を特定する助けが必要です (コーディング言語を解体して申し訳ありません: ))
Knockout を使用してデータをバインドし、Breeze でエンティティをロードしています。この質問は、いつ追加の複合型を Breeze エンティティに拡張するかの拡張です
また、私のモデルは最初に EF コードであり、子と孫の間の 1 対多の関係を定義する構成があり、 Breeze はこれを既に知っていると思いますが、これを利用する方法を見つけようとしています。
childs.js (ビューモデル)
var childs = ko.observableArray();
var grandChilds = ko.observableArray();
var parentId = ko.observable();
function refresh() {
var parentId = (parent).parentId; // << for ex. don't worry about this line : )
return Q.all([getChildren(), getGrandChildren()]);
}
function getChildren() {
return datacontext.getChildren(childs, parentId);
}
function getGrandChildren() {
return datacontext.getGrandChildren(grandChilds);
}
およびビュー(childs.html)
<div data-bind="foreach: childs">
<div title="Go to Child Details">
<div><strong data-bind="text: name"></strong></div>
<div><strong data-bind="text: gender().description"></strong></div>
</div>
<div>
<!-- ko.compose { view: grandChilds} --><!--/ko-->
</div>
</div>
参照用の現在のデータコンテキスト
var getChilds= function (childsObservable, parentId) {
var query = EntityQuery.from('Childs')
.where('parentId', '==', parentId)
.expand('grandChildren')
.orderBy('id');
return manager.executeQuery(query)
.then(querySucceeded)
.fail(queryFailed);
function querySucceeded(data) {
if (childsObservable) {
childsObservable(data.results);
}
logger.log('Retrieved [Childs] and [Grandchilds] from remote data source', data, system.getModuleId(datacontext), true);
}
};
子供の孫だけを読み込みたいのですが、子供が多いので、すべての孫を1つのリストに表示するのではなく、正しい子の下に孫のみを表示したいのです。どんな助けでも大歓迎です。