상용 웹 사이트의 사전 테스트에서 발견되는 Layke의 솔루션 (작동하지 않는)에 대한 문제가 있습니다.
사례 1 :
- &이 나무를 채울 만듭니다.
- 선택할 노드를 클릭하십시오.
- Layke의 솔루션처럼 refreshTree를 실행하십시오.
- 노드를 클릭하면 "this.labelNode is undefined"오류가 발생합니다.
지금의 경우 2, 다시 시작합니다.
- 선택할 노드를 클릭하십시오.
- 이전에 선택한 노드를 Ctrl- 클릭하십시오.
- Layke의 솔루션처럼 refreshTree를 실행하십시오.
- 노드를 클릭하십시오. 오류가 없습니다.
두 번째 선택을 수행 할 때 선택 속성 (배경색 등)을 취소하는 데 첫 번째 선택에 저장된 선택 참조가 사용됩니다. 불행히도 참조 된 객체가 이제는 비트 버킷에 있습니다. 수정 코드 은 프로덕션 준비 상태로 표시됩니다. 즉 사전 프로덕션 테스트에 실패하지 않았습니다.
용액을 넣어이다
Tree.dndController.selectNone();
상기 종래의 Layke refreshTree 용액 제 라인. 이 기능에 대한
refreshTree : function() {
// Destruct the references to any selected nodes so that
// the refreshed tree will not attempt to unselect destructed nodes
// when a new selection is made.
// These references are contained in Tree.selectedItem,
// Tree.selectedItems, Tree.selectedNode, and Tree.selectedNodes.
Tree.dndController.selectNone();
Tree.model.store.clearOnClose = true;
Tree.model.store.close();
// Completely delete every node from the dijit.Tree
Tree._itemNodesMap = {};
Tree.rootNode.state = "UNCHECKED";
Tree.model.root.children = null;
// Destroy the widget
Tree.rootNode.destroyRecursive();
// Recreate the model, (with the model again)
Tree.model.constructor(dijit.byId("myTree").model)
// Rebuild the tree
Tree.postMixInProperties();
Tree._load();
}
Laykes에게 감사드립니다. 스크립트는 실제로 트리 렌더링을 새로 고칩니다. 그러나이 예제에서는 새 데이터를로드 할 수 없었습니다. 내가 만든 함수를 호출하는 주기적 새로 고침을 구현했습니다. 내 저장소에는 url 속성이 JSON 데이터가 들어있는 파일 이름으로 설정되어 있습니다. 파일의 데이터를 변경하지만 트리는 항상 초기 데이터를 렌더링합니다. 새 데이터를로드하는 방법을 알고 있습니까? – Zion
죄송합니다 TheLostGuy, 나는 당신의 가게가 근처에 새로 고침으로 설정되어 있다고 가정. 추가 : dijit.byId ("myTree"). model.store.clearOnClose = true; – Layke
Laykes에게 감사드립니다. 이것은 실제로 나를 위해 지금 일하고 있습니다. 건배! – Zion