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

当我做以下

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

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

谢谢。

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

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

就像在文档中一样,树是树的内部绘图,你通过调用getTree命令得到它: $("#node").dynatree("getTree")

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

function初始化:

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

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

 $("#tree3").dynatree("destroy"); InitTree(); 

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

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

  //The HTML: Checkme
$("#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(); });

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

如果你想重新加载Dynatree手段首先删除节点由他下面的代码

$( “#树”)dynatree( “getRoot”)removeChildren此()。

最初,我使用initAjax的“选项”来进行ajax调用。 但是,由于我必须显示一条错误消息,因此重新加载后服务器出现了空响应,我决定采用通常的ajax路由。 我进行ajax调用,得到响应,然后重新加载树。 所以我在我的javascript文件中这样做了

  var myObj = {getDynaTree :function(){ //Refresh the dynatree $("#dynaTree").dynatree("option", "children", null); $.ajax({ url: "myurl", type: "POST", dataType: "application/json", headers:{'Accept' :'application/json', 'Content-Type': 'application/json' }, data : JSON.stringify(myData), //handle the response complete : function(treeData) { $("#dynaTree").dynatree("option", "generateIds", true); var parsedTreeData = JSON.parse(treeData.responseText); if(parsedTreeData.length ==0) { var parsedTreeData = [{title: "No documents found for the search criteria, please revisit the criteria", isFolder: false, tooltip: "No documents found for the search criteria, please revisit the criteria" }]; } $("#dynaTree").dynatree("option", "children", parsedTreeData); $("#dynaTree").dynatree("getTree").reload(); } }); }} 

调用function

  $("#myLink").click(function() { myObj.getDynaTree(); } 

dynatree在一个单独的javascript文件中初始化

  //Initialization for the dyna tree. var treeData = [{title: "Dynamic Tree Demo",isFolder: false, tooltip: "Here, is your Dynamic Tree!" }]; jQuery(document).ready(function() { initReqActions(treeData); }); initReqActions= function(myTree){ $("#dynaTree").dynatree({ checkbox: false, selectMode: 2, // create IDs for HTML elements that are generated generateIds: true, cookie: { expires :-1 }, children: myTree, onQuerySelect: function(select, node) { if( node.data.isFolder ) return false; }, onClick: function(node, event) { if( ! node.data.isFolder ) node.toggleSelect(); }, onDblClick: function(node, event) { node.toggleExpand(); }, onKeydown: function(node, event) { if( event.which == 32 ) { node.toggleSelect(); return false; } } }); } 
 n= "#tree"; $(n).dynatree({}); tree = $(n).dynatree("getTree"); root = tree.getRoot(); tree.enableUpdate(false); root.removeChildren(); tree.enableUpdate(true);