我有一个加载“子”实体的ViewModel,我还想根据加载的每个子代显示'孙'实体。为了简化事情,我需要帮助确定如何查询这些对象,并在浏览器中正确的“树”下显示它们(对于编码语言的屠宰非常抱歉))如何/何时在Breeze中查询'扩展'实体
我正在使用Knockout绑定数据并加载与微风的实体。这个问题的When to add extend additional complex types onto a Breeze entity
而且扩展 - 我的型号是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>
而且我目前的DataContext参考
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);
}
};
我想只装载孩子的孙辈,并且因为有很多孩子我只想在c下展示孙辈直立的孩子,并不是所有的孙子都在一个列表中。任何帮助,将不胜感激。
作为一个说明杰留给我一个关于我的另一个问题的笔记,看看EntityQuery.expand方法,我现在重新阅读它,我很确定答案在这里,我应该在开启一个新的问题之前研究这个,但随时让我觉得自己很愚蠢,因为不这样做:) – 2013-04-24 19:24:01