У меня есть ViewModel, которая загружает «дочерние» объекты, и я хочу также отображать «внучатые» объекты на основе каждого загруженного дочернего элемента. Чтобы упростить ситуацию, мне нужна помощь в определении того, как запрашивать эти объекты и отображать их в соответствующем «дереве» в браузере (извиняюсь за то, что я разделываю язык кодирования:))
Я использую Knockout для привязки данных и загрузки объектов с помощью Breeze. Этот вопрос является расширением Когда добавлять расширение дополнительные сложные типы в сущности Breeze
Кроме того, моя модель - это сначала код EF, и у меня есть конфигурация, определяющая отношение "один ко многим" между дочерними элементами и внуками, и я думаю, что Бриз уже знает об этом, но я пытаюсь понять, как воспользоваться преимуществами это.
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);
}
};
Я хочу загружать только внуков детей, и, поскольку детей много, я хочу отображать внуков только под правильным ребенком, а не всех внуков в одном списке. Любая помощь будет оценена по достоинству.