의 TreePanel 기본 사용
TreePanel 기본 사용
트 리 컨트롤 은 Ext. tree. TreePanel 류 로 정의 되 며, 컨트롤 의 이름 은 treepanel 이 며, TreePanel 류 는 Panel 패 널 에서 계승 합 니 다.ExtJS 에서 트 리 컨트롤 을 사용 하 는 것 은 매우 간단 합 니 다. 아래 코드 를 먼저 보 겠 습 니 다.
Ext.onReady(function(){
var root=new Ext.tree.TreeNode({
id:"root",
text:" "});
root.appendChild(new Ext.tree.TreeNode({
id:"c1",
text:" "
}));
var tree=new Ext.tree.TreePanel({
renderTo:"hello",
root:root,
width:100
});
});
코드 의 첫 번 째 문장 은 new Ext. tree. TreeNode 클래스 를 사용 하여 트 리 노드 를 만 들 고, 두 번 째 문장 은 트 리 노드 의 루트 를 사용 하 는 appendChild 방법 으로 이 노드 에 하위 노드 를 추가 합 니 다. 마지막 으로 new Ext. tree. TreePanel 을 사용 하여 트 리 패 널 을 만 듭 니 다. 트 리 패 널 의 초기 화 매개 변수 에서 지정 한 트 리 의 루트 속성 값 을 앞 에 만 든 루트 노드 로 만 듭 니 다.나무 뿌리 노드 다.위의 프로그램 실행 효 과 는 다음 그림 과 같다.
나무의 노드 정보.ExtJS 트 리 컨트롤 은 이러한 기능 에 대한 지원 을 제공 합 니 다. 트 리 컨트롤 을 만 들 때 트 리 에 노드 로 더 를 지정 하면 서버 에서 트 리 의 노드 정 보 를 동적 으로 불 러 올 수 있 습 니 다.다음 코드 를 살 펴 보 겠 습 니 다.
var root=new Ext.tree.AsyncTreeNode({
id:"root",
text:" "});
var tree=new Ext.tree.TreePanel({
renderTo:"hello",
root:root,
loader: new Ext.tree.TreeLoader({url:"treedata.js"}),
width:100
});
treedata. js 이 url 이 돌아 오 는 내용 은 다음 과 같 습 니 다.
[{
id: 1,
text: ' 1',
leaf: true
},{
id: 2,
text: ' 2',
children: [{
id: 3,
text: ' ',
leaf: true
}]
}]
위의 프로그램 을 실행 하면 하위 노드 를 비동기 로 불 러 오 는 트 리 를 얻 을 수 있 습 니 다. '루트 노드' 를 누 르 면 서버 에 하위 노드 를 불 러 옵 니 다. 아래 그림 과 같 습 니 다.
물론 위의 프로그램 은 트 리 의 모든 노드 정 보 를 한꺼번에 불 러 오 는 것 입 니 다. 모든 노드 가 동적 으로 불 러 오 는 트 리 를 지원 할 수 있 습 니 다. 서버 를 통 해 데 이 터 를 요청 할 때 서버 에서 돌아 오 는 데 이 터 는 하위 노드 만 포함 하고 손자 노드 를 되 돌려 주지 않 으 면 됩 니 다.예 를 들 어 위의 treedata. js 의 내용 을 다음 내용 으로 바 꿉 니 다.
[{
id: 1,
text: ' ',
leaf: false
}]
즉, 노드 트 리 에는 하위 노드 만 포함 되 어 있 고 이 하위 노드 는 leaf 값 을 false 로 지정 합 니 다 (기본 적 인 상황 에서 이 값 은 false). 이 노드 는 잎 노드 가 아니 라 그 아래 에 노드 가 있 음 을 나타 냅 니 다.앞의 프로그램 을 실행 하고 '하위 노드' 를 계속 클릭 하면 다음 그림 과 같은 효 과 를 얻 을 수 있 습 니 다.
물론 이것 은 무한 순환 트 리 입 니 다. 실제 응용 프로그램 에서 우리 서버 에서 되 돌아 오 는 데 이 터 는 프로그램 동적 으로 생 성 되 기 때문에 매번 leaf 를 false 로 하 는 노드 가 생 길 수 없습니다. 잎 노드 일 때 돌아 오 는 JOSN 대상 의 leaf 를 true 로 설정 해 야 합 니 다.다음 과 같다.
[{
id: 1,
text: ' ',
leaf:true
}]
이벤트 처리
물론 나무 한 그루 만 표시 할 수 있 는 것 으로 는 부족 합 니 다. 저 희 는 사용자 가 트 리 노드 를 클릭 할 때 해당 하 는 것 을 실행 해 야 합 니 다. 예 를 들 어 특정한 연결 을 열 고 특정한 함 수 를 실행 하 는 등 이벤트 처리 에 사용 해 야 합 니 다.예 를 들 어 다음 코드:
Ext.onReady(function(){
var root=new Ext.tree.TreeNode({
id:"root",
text:" "});
var c1=new Ext.tree.TreeNode({
id:"c1",
text:" "
});
root.appendChild(c1);
var tree=new Ext.tree.TreePanel({
renderTo:"hello",
root:root,
width:100
});
tree.on("click",function(node,event){
alert(" "+node.text);
}
);
c1.on("click",function(node,event){
alert(" "+node.text);
}
);
});
위의 프로그램 을 실행 합 니 다. 사용자 가 트 리 컨트롤 의 임의의 노드 를 클릭 하면 알림 정보 상자 가 팝 업 됩 니 다. 사용자 가 c1 이라는 하위 노드 를 클릭 하면 알림 정보 상자 가 두 번 팝 업 됩 니 다.tree 의 click 이벤트 응답 함 수 를 지정 하 는 것 외 에 node 노드 에 단독 이벤트 응답 함 수 를 지정 하기 때 문 입 니 다.물론 트 리 노드 를 클릭 할 때 지정 한 url 로 이동 하 는 기능 만 실현 하려 면 매우 간단 합 니 다.다음 코드 보기:
Ext.onReady(function(){
var root=new Ext.tree.TreeNode({
id:"root",
href:"http://www.easyjf.com",
hrefTarget:"_blank",
text:" "});
var c1=new Ext.tree.TreeNode({
id:"c1",
href:"http://wlr.easyjf.com",
hrefTarget:"_blank",
text:" "
});
root.appendChild(c1);
var tree=new Ext.tree.TreePanel({
renderTo:"hello",
root:root,
width:100
});
});
프로그램 을 실행 하고 트 리 노드 를 클릭 하면 새 창 을 탐색 할 때 노드 에서 href 가 지정 한 링크 를 엽 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.