2013-09-29 1 views
0

내가 programitically dynatree을로드하고 새 노드로 다시로드하지 않습니다 이전 노드Dynatree는 프로그래밍 방식

function reload(data) 
    { 
     $("#tree").dynatree("getRoot").visit(function(node){ 
      node.remove(); 
     }); 
     loadTree(data) 
    } 

위의 코드는 하나의 노드 만 제거합니다. 나는 여기서 무엇을 놓치고 있느냐. 사전

UPDATE 에서 덕분에 내가 마지막으로 내가 작업 한

답변

1

이 초기로드하는 동안 추가 한 모든 노드를 제거합니다 :

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

을 lazyloading을 통해 다음 코드

function reload(data) 
    { 
     $("#tree").remove(); 
     $('#test').html('<div id="tree"></div>'); 
     $('#tree').dynatree(); //reinitialize the tree 
     loadTree(data); 
    } 

그것은 자식 노드를 채울 수 없습니다 다음 다시 있지만 않습니다 통해 해결에 노력했다. 이 줄을 사용하여 코드를 변경했습니다.

function reload(data) 
    { 
      //get all the available parent nodes 
      var n = []; 
      $("#tree").dynatree("getRoot").visit(function(node){ 
       n.push(node.data.key); 
       }); 
       //delete each node one by one 
       var tree = $("#tree").dynatree("getTree"); 
       $.each(n,function(index,value){ 
       var Cnode = tree.getNodeByKey(value); 
       if(Cnode != null) Cnode.remove(); 
       }); 
       loadTree(data); 
    } 

이 방법이 최선의 해결책이 아님을 확신합니다. 그래서 누군가가 그것을하는 더 좋은 방법이 있다면, 다른 대답을 게시하십시오.