使用KendoUI网格和breeze.js排除最大调用堆栈

时间:2013-11-08 13:21:46

标签: javascript kendo-grid breeze

我遇到了整合breeze.js和kenoui网格的问题。我的视图模型中有一个可观察的数组,我填充这个数组调用ajax操作。当我将数组连接到网格时,我得到一个异常“超出最大调用堆栈”。我读了一篇帖子,说明网格在breeze.js实体中的entityacpect有问题。 是否有任何热修复此问题或任何其他建议。

提前致谢...

1 个答案:

答案 0 :(得分:2)

这是一个标准的循环引用javascript序列化问题。这不是微风特有的问题。

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

您甚至可以通过没有圆形导航路径的Breeze实体获得循环引用问题。困难源于每个Breeze实体通过其entityAspect属性具有固有的循环性:

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

所以你有两种方法。

  

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

     

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