如何重新加载/刷新/重新启动DynaTree?

Mr *_*der 14 javascript treeview jquery dynatree jquery-dynatree

当我做以下

$('#tree').dynatree("option","initAjax",{url:"http://google.com"});
Run Code Online (Sandbox Code Playgroud)

我希望dynatree忘记当前的树数据,并使用来自指定url的新数据重新加载.但我发现默认情况下不会这样做.

谢谢.

lon*_*aff 15

看看tree.reload()方法,它应该做你想做的事情.

请参阅此处的文档:http://wwwendt.de/tech/dynatree/doc/dynatree-doc.html#h8.2

在文档中,树是树的内部绘图,您可以通过调用getTree命令来获取它: $("#node").dynatree("getTree")


mov*_*13h 9

tree.reload();用于动态加载的数据,如Ajax.如果您正在使用ul/li列表并需要重新加载树,则必须执行以下操作: $("#tree").dynatree("destroy"); 常规dynatree创建代码之前.destroy文件没有记录(参见http://wwwendt.de/tech/dynatree/doc/dynatree-doc.html).


小智 5

功能初始化:

function InitTree() {
   $("#tree3").dynatree({
       (...init params...)
   });
}

InitTree();
Run Code Online (Sandbox Code Playgroud)

要重新加载数据,请致电:

$("#tree3").dynatree("destroy");
InitTree();
Run Code Online (Sandbox Code Playgroud)


use*_*092 5

此问题与尝试使用新数据重新加载/刷新dynatree重复

我的解决方案并不需要像弯路empty()destroy()等想一想:当Dynatree创建您指定的设置,它必须使用的字典.然而,由于这是一个配置字典,它不会被重新评估,即使一些参数是变量并且由于点击等而发生变化.所以为了解决这个问题并避免昂贵的操作,比如删除DOM并重新创建它,我们就像我认为Dynatree开发人员一样有这个意图(但在AJAX/JSON示例中没有明确记录):

  //The HTML:
      <input name="filter" id="checkbox" type="checkbox" value="X">Checkme<br>
      <label id="mylabel"></label>

  $("#checkbox").click(function() {
    $("#mylabel").text($(this).is(":checked"))
    $("#tree").dynatree("option", "initAjax", {
             url: "myurl/myphp.php",
             data: {
                myparameter: $("#checkbox").is(":checked").toString()
             }
     });

    $("#tree").dynatree("getTree").reload();
  });
Run Code Online (Sandbox Code Playgroud)

此示例在#tree每次单击按钮时设置配置,然后重新加载树.

  • 谢谢你的教育.我编辑了我的答案,包括完整的答案. (4认同)