【问题标题】:Dynatree + lazy loading = slow动态树 + 延迟加载 = 慢
【发布时间】:2018-04-04 19:52:28
【问题描述】:
我开始在我的项目中使用 Dynatree,但我遇到了一个问题 - 当我尝试懒惰阅读时,它的运行速度非常慢。我发现每次调用 addChild 时都会重新渲染我的整个树,我认为它效率不高。
有人知道我可以用它做什么吗?
两年前,mar10 写道:“enableUpdate(true) 调用 tree.redraw(),所以整个树都被更新了。这将随着 1.0 版本而改变,但即便如此,结合 addChild 调用会更快。” (http://stackoverflow.com/questions/3097791/dynatree-addchild-question-for-the-components-author)
我现在使用的是 1.0 版,但找不到任何更改。
【问题讨论】:
标签:
dynatree
jquery-dynatree
【解决方案2】:
您可以使用 ajax 调用来初始化和更新 Dynatree,而不是 addChild。使用dynatree的initAjax和node的appendAjax方法。
作为 data 参数的参数,我传递父节点的 id(如果是根节点,则为 0)。
initAjax: {
type: 'POST',
url: 'inc/treeNodes.php',
dataType: 'json',
data: {key: 0}
}
和
onLazyRead: function (node) {
node.appendAjax({
type: 'POST',
url: "inc/treeNodes.php",
dataType: 'json',
data: {key: node.data.key}
})
}
使用此方法,速度不再是问题,因为在执行 Ajax 调用以加载子节点时不会重新加载整个树。