【问题标题】:Syncfusion angular treeview component's getTreedata() method taking much timeSyncfusion angular treeview 组件的 getTreedata() 方法需要很长时间
【发布时间】:2021-08-25 03:48:16
【问题描述】:

在我的 treeview 组件中,我加载了 1000 多个节点作为一个父节点的子节点。然后在父节点的 nodeChecked 事件中,我循环遍历所有 1000 个子节点并调用 getTreeData() 方法通过传递子 ID 获取特定子节点的所有数据。现在的问题是,这个过程需要很多时间,而且我面临着性能问题。如果树有超过 1000 条记录 getTreeData() 需要更长的时间才能返回结果。我检查了文档,发现除了getTreeData 之外没有其他方法可以返回整个树节点的数据。 getTreeData() 方法有什么替代方法吗?

【问题讨论】:

    标签: angular treeview syncfusion ej2-syncfusion


    【解决方案1】:

    我们检查了您的查询并希望告知您,TreeView 组件以可行的性能时间获取数据。在您的场景中,循环将执行 1000 个项目,然后再执行 1000 次以通过 getTreeData() 方法获取相应节点的树数据。这是您最终报告的场景的根本原因。由于您是通过 nodeChecked 事件获取节点详细信息,因此您可以使用事件参数获取节点详细信息,而不是使用 getTreeData() 方法,如下所示。

    public nodeChecked(args) {
    var data = args.data;
    console.log(data);
    }
    

    示例:https://stackblitz.com/edit/angular-getnodedata-hzkwjl-hrxmop-kkn1ne-dl8ji8?file=app.component.ts

    【讨论】:

    • 使用 nodeChecked 事件获取详细信息的示例:stackblitz.com/edit/angular-get-treenode?file=app.component.ts
    • 首先感谢您的回复。 args.data 键仅提供特定数据。如果我在我的数据源中添加任何自定义键,那么它将不会返回。正如在给定的样本中添加了 numberOfSubgroups 但 args.data 没有返回它。我需要所有子节点的相关数据。
    • 您可以通过在getTreeData方法中传递所选节点的id来获取特定节点的数据,如下面的代码所示 sn-p, public nodeChecked(args) { var data = this. treeObj.getTreeData(args.data[0].id);控制台.log(数据); } 示例:stackblitz.com/edit/… 请问您是否需要在 nodeChecked 事件中获取所有 TreeView 节点的详细信息,或者请详细说明您的用例需求?
    • 在检查父节点的事件中,我正在遍历其所有子节点并使用 getTreeData() 方法获取每个子节点的详细信息。但是当我循环 1000 个子节点时,它需要时间。我需要子节点的所有细节。所以我不能在这里使用 getNode() 方法,因为它只返回特定的细节。
    猜你喜欢
    • 2018-09-24
    • 1970-01-01
    • 2018-07-18
    • 2018-03-18
    • 2017-11-07
    • 2013-09-07
    • 2020-08-26
    • 2014-10-09
    • 2012-11-26
    相关资源
    最近更新 更多