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"); 前に次のことを行う必要があります。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(); }

ダイナツリーは別の 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 に答える