【问题标题】:KendoTreeView with BreezeJS throws "Maximum call stack size exceeded" error带有 BreezeJS 的 KendoTreeView 抛出“超出最大调用堆栈大小”错误
【发布时间】:2014-08-26 01:26:03
【问题描述】:

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

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

FWIW 我正在使用角度绑定等(不确定在这种情况下是否会有所不同)。

【问题讨论】:

    标签: angularjs kendo-ui breeze


    【解决方案1】:

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

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

    查看此链接:http://www.breezejs.com/documentation/knockout-circular-references

    或者这个帖子:Maximum call stack exccedwith using KendoUI grid and breeze.js

    【讨论】:

    • Jay 感谢您的意见。我意识到这不是 Breeze 的问题。我希望找到一种方法来配置 KendoUI 来处理这类问题,这样我就可以直接绑定到微风实体。
    • 在 Kendo 进行一些更改之前,我们最好的建议是创建实体的副本,并在将它们绑定到 Kendo 之前删除所有循环引用。你联系过他们吗,这个问题之前就出现过,越听越有可能听。
    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 2021-08-15
    • 2016-09-26
    相关资源
    最近更新 更多