2

我正在通过微风返回一个包含嵌套模型的对象。让我拿典型的样本。客户和订单。我在服务器上使用 EF5。使用微风,我调用我的控制器来获取所有客户,并且还在微风查询调用中包含“.expand”属性以包含“订单”实体。json 完美返回,我正在使用“Derick Bailey”构建的“kendo.breeze.datasource”将微风实体映射到淘汰可观察对象 [使用 ko.mapping],然后最终绑定到剑道网格。在我们想要返回嵌套类型之前,这非常有效。例如,我想将“order().Orderid”绑定到一个元素。所以,当我尝试将“数据”传递给剑道数据源以绑定到网格时,我得到一个“堆栈溢出”异常。这种情况是针对“ 如果我完全忽略“订单”,则绑定有效,但我无法访问网格中的“订单().Orderid”。请帮忙?如果我完全忽略“订单”,则绑定有效,但我无法访问网格中的“订单().Orderid”。请帮忙?

4

1 回答 1

0

您需要处理的微风数据返回 - 在传递到网格之前 - 使用 ko.mapping 到ignore ['entityAspect', 'entityType', and 'orders']

我遇到了一个非常相似的问题,并且从 Derick 在 kendo-labs 的“kendo.breeze.datasource”开始。我开始了keno-breeze-knockout以建立更多的东西......

完成您所追求的部分示例是:
new kendo.data.extensions.BreezeDataSource({ entityManager: self.datacontext.manager,
endPoint: new breeze.EntityQuery.from('Products').expand('Category'),
defaultSort: "productName asc",
mapping: {
ignore: ['products'] // category.products is recursive - ignore it
}

应该强调你的追求的来源是:

``` function querySucceeded(xhr) { payload.data = self.mapping.mapToJS(xhr.results);

    if (self.inlineCount) {
      payload.total = xhr.inlineCount;
    }
    options.success(payload); // notify the DataSource that the operation is complete
     return true;
  }

```

function mapToJS(items) {
baseIgnore: ['entityType', 'entityAspect'],
include: [],
ignore: [], // set your particular properties here
mapToJS : function(results) {
var koMapping = {
'include': this.include,
'ignore': this.baseIgnore.concat(this.ignore)
};
// if you override - you might not care about using ko.mapping?
if (!ko.mapping) {
throw new Error('knockout mapping plugin is required!');
}
return ko.mapping.toJS(results,koMapping);
}
}

于 2013-05-21T21:09:02.817 回答