通过下拉列表在数组之间切换需要相当多的时间。我该如何减少它? Angularjs ,IvhTreeview
Switching between arrays via a dropdown takes considerable amount. How do i reduce it ?? Angularjs ,IvhTreeview
页面加载后,我通过 rest-angular 请求获取了两个数组。稍后我使用 angular 模块 - ivh-tree view 来显示它们。两个数组相差 10^3 个元素。
问题:通过下拉菜单在它们之间切换需要相当多的时间。我该如何减少它??
我相信任何解决方案都需要修改 ivh-treeview
以提高自身效率。
快速浏览一下 ivh-treeview
的源代码,它似乎总是渲染整个树并随着节点的展开和折叠切换可见性。
如果您将指令修改为最初只渲染已经展开的节点,然后按需渲染,那么它应该会大大提高性能,因为您只会渲染您实际需要的内容。
另请注意,ivh-treeview
有大量嵌套的中继器,但从未指定 track by
(作为通用控件,它不一定)。如果您更改要求为每个树节点提供一个 id 字段,那么您可以将 track by
添加到对性能有积极影响的转发器(但小于延迟加载)。
另请注意,作为嵌套中继器的大型递归结构,通过将数据转换为具有深度标识符的平面列表,然后将整个树渲染为具有 css 的单个列表,可能会提高性能来控制深度。这失去了嵌套节点的语义优势,但可能对性能产生积极影响。它还会使树的许多部分复杂化,因为您失去了嵌套结构和几乎自动扩展和折叠的好处。
页面加载后,我通过 rest-angular 请求获取了两个数组。稍后我使用 angular 模块 - ivh-tree view 来显示它们。两个数组相差 10^3 个元素。 问题:通过下拉菜单在它们之间切换需要相当多的时间。我该如何减少它??
我相信任何解决方案都需要修改 ivh-treeview
以提高自身效率。
快速浏览一下 ivh-treeview
的源代码,它似乎总是渲染整个树并随着节点的展开和折叠切换可见性。
如果您将指令修改为最初只渲染已经展开的节点,然后按需渲染,那么它应该会大大提高性能,因为您只会渲染您实际需要的内容。
另请注意,ivh-treeview
有大量嵌套的中继器,但从未指定 track by
(作为通用控件,它不一定)。如果您更改要求为每个树节点提供一个 id 字段,那么您可以将 track by
添加到对性能有积极影响的转发器(但小于延迟加载)。
另请注意,作为嵌套中继器的大型递归结构,通过将数据转换为具有深度标识符的平面列表,然后将整个树渲染为具有 css 的单个列表,可能会提高性能来控制深度。这失去了嵌套节点的语义优势,但可能对性能产生积极影响。它还会使树的许多部分复杂化,因为您失去了嵌套结构和几乎自动扩展和折叠的好处。