2

我面临一个问题来集成微风.js 和 kenoui grid 。我的视图模型中有一个可观察数组,我填充这个数组调用 ajax 操作。当我将数组连接到网格时,我得到一个异常 "Maximum call stack exceeded" 。我读了一篇文章,说网格在微风.js 实体中的 entityacpect 存在问题。是否有针对此问题的任何热修复,或任何其他建议。

提前致谢 ...

4

1 回答 1

2

这是一个标准的循环参考 javascript 序列化问题。这不是 Breeze 特定的问题。

循环引用是实体模型的自然特征。考虑一个返回客户订单的 Customer.Orders 属性,每个订单都有一个 Order.Customer 导航属性以返回其父客户。这是意料之中的,除非您明确管理序列化,否则将导致您在尝试序列化此类图时遇到的错误。

您甚至可以使用没有循环导航路径的 Breeze 实体遇到循环引用问题。困难源于这样一个事实,即每个 Breeze 实体都通过其 entityAspect 属性具有固有的循环性:

如果您通过 Breeze EntityManager.executeQueryEntityManager.saveChanges方法,这种循环引用对 Breeze 来说不是问题,因为 Breeze 会自动为您处理序列化过程,但是如果您绕过这些方法,您可能已经完成了,那么您必须自己管理序列化。

所以你有两种方法。

1) 使用EntityManager.executeQuery执行您的 ajax 操作。几乎任何端点都可以通过这种方法到达。

2)阅读以下文章(它是关于淘汰赛,但问题是相同的)并明确管理您的序列化:http ://www.breezejs.com/documentation/knockout-circular-references

于 2013-11-08T19:56:41.053 回答