我开始在我的项目中使用Dynatree,我遇到了一个问题 - 当我尝试懒惰阅读时,它的工作速度非常慢。每当我调用addChild时,我发现我的整个树都被重新渲染,我觉得它效率不高。
有谁知道我能用它做什么?
两年前,mar10写道:“enableUpdate(true)调用tree.redraw(),因此整个树都会更新。这将随1.0版本发生变化,但即使这样,组合addChild调用也会更快。” (http://stackoverflow.com/questions/3097791/dynatree-addchild-question-for-the-components-author)
我现在使用1.0版,但我找不到任何更改。
答案 0 :(得分:0)
也许您可以尝试 1.2.2版本,最新版本,最新的jquery& UI包?
答案 1 :(得分:0)
您可以使用ajax调用初始化和更新Dynatree,而不是addChild。使用dynatree的initAjax
和节点的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调用加载子节点时不会重新加载整个树。