带有BreezeJS的KendoTreeView会抛出“超出最大调用堆栈大小”错误

时间:2014-08-25 16:42:19

标签: angularjs kendo-ui breeze

使用BreezeJS实体,并尝试使用KendoUI中的KendoTreeView显示它们。树视图抛出此错误,可能是因为循环引用。在微风实体中存在多个循环,最明显的是entity.entityAspect.entity,并且模型也可以包含循环引用(例如,Customer-> Orders-> Customer)。如何将KendoTreeView配置为仅处理特定的导航属性,并忽略导致循环引用的属性?

我意识到我可以遍历实体并构建一个辅助数组用于显示目的。但是,我希望尽可能直接绑定到实体,而不是尝试手动保持树与实体数组同步。

FWIW我正在使用角度绑定等(不确定在这种情况下是否会产生影响)。

1 个答案:

答案 0 :(得分:0)

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

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

请参阅此链接:http://www.breezejs.com/documentation/knockout-circular-references

或这篇文章:Maximum call stack exccedwith using KendoUI grid and breeze.js