15

当我执行以下操作时

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

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

谢谢。

4

7 回答 7

16

看看tree.reload()方法,它应该做你所追求的。

在此处查看文档:http ://wwwendt.de/tech/dynatree/doc/dynatree-doc.html#h8.2

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

于 2011-09-06T10:10:14.337 回答
10

tree.reload();用于动态加载的数据,就像在 Ajax 中一样。如果您正在使用 ul/li 列表并需要重新加载您的树,您必须这样做: $("#tree").dynatree("destroy"); 您的常规 dynatree 创建代码之前。该destroy参数未记录。

于 2012-09-03T11:45:27.527 回答
5

初始化函数:

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

InitTree();

要重新加载数据,请调用:

$("#tree3").dynatree("destroy");
InitTree();
于 2012-04-03T17:06:53.827 回答
5

这个问题与Trying to reload/refresh dynatree with new data重复

我的解决方案不需要诸如此类的弯路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();
  });

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

于 2012-10-11T07:18:28.563 回答
2

如果你想重新加载 Dynatree 意味着首先删除节点通过他下面的代码

$("#tree").dynatree("getRoot").removeChildren();

于 2016-07-06T10:13:14.047 回答
1

最初,我使用带有 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();

            }
        });

    }}

调用函数

    $("#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;
            }
        }


    });
}
于 2016-02-24T17:09:41.727 回答
0
n= "#tree";
$(n).dynatree({});
tree = $(n).dynatree("getTree");
root = tree.getRoot();
tree.enableUpdate(false);
root.removeChildren();
tree.enableUpdate(true);
于 2013-09-09T13:48:58.403 回答