2012-09-13 6 views
1

내 webapp에서 dynatree를 사용하여 & 드롭 (계층 구조 변경) 및 사용자 지정 링크 (항목 상태 변경)를 사용하여 편집 할 수있는 데이터 트리를 표시합니다. 모든 변경 사항은 링크를 삭제하거나 클릭 한 직후에 데이터베이스에 저장됩니다.jquery dynatree를 완전히 다시 렌더링하지 않고 새로 고치는 방법은 무엇입니까?

환경을 고려하여 트리와 백엔드 모델이 동기화되지 않도록 각 수정 후 트리를 완전히 업데이트하고 싶습니다.

다음과 같이 할 수 있습니다. how to reload/refresh/reinit DynaTree?. 하지만 이렇게하려면 전체 트리를 파괴하고 다시 초기화해야하며 모든 노드가 무너 지도록해야합니다.

더 이상 존재하지 않는 항목을 버리거나, 새 항목을 추가하거나, 수정 된 아이콘의 제목/아이콘/데이터를 변경하는 등 모든 트리 항목을 새로 고치는 옵션이 좋겠지 만이 항목을 찾을 수는 없습니다. 선적 서류 비치.

이것을 달성하기위한 트릭이 있습니까? 어쩌면 숨겨진 기능 일 수도 있고 해결 방법 일 수도 있습니다. (적어도 내가 찾을 수 없습니다)이있을 것 같지 않기 때문에 영감을

감사합니다, 피터

답변

2

모든 내장 기능 트리를 업데이트 (또는 일부)의지지 자바 스크립트 데이터에 따라 개체,이 도우미 메서드를 사용하여 트리 (또는 그 분기) 업데이트하려면 쓴 :

EDIT : 자식 추가 또는 제거 할 때 메서드의 이전 구현이 작동하지 않았습니다. 이 모든 childNodes에 버리고 다시 모든 아이를 추가하는 업데이트 :

function updateNodeRecursively(node, data, includeSelf) { 
    if(includeSelf == undefined) includeSelf = true; 
    if(includeSelf) node.data = data; 
    node.removeChildren(); 
    if(data.children) { 
     for(var i=0; i<data.children.length; i++) { 
     var cnode = node.addChild(data.children[i]); 
     updateNodeRecursively(cnode, data.children[i],false) 
     } 
    } 

를 자바 스크립트에서 트리를 초기화 할 때, 나무가 완전히 또는 부분적으로 업데이트 할 수 있습니다 사용 그것은 data에 대해 동일한 구조를 사용, 당신이 어느 노드에 따라 첫 번째 인수로 전달됩니다.

관련 문제