2011-03-04 5 views
0

아래 코드는 트리 구조를 표시합니다. 이미지 Pic.gif를 클릭하면 새 이미지로 바뀌어야합니다. 마찬가지로 이미지 pic1.gif가 새 이미지로 바뀌고 pic6.gif가 새 이미지로 바뀝니다. 코드를 사용하면 도움이 될 수 있습니까? 정확히이 코드에 맞습니까?이미지 바꾸기?

var children = [{ 
    text: 'family', 
    icon: 'pic1.gif', 
    children: [{ 
     text: 'parent1', 
     icon: 'pic2.gif', 
     children: [{ 
      icon: 'pic3.gif', 
      text: 'children1', 
      leaf: true}, 
     { 
      icon: 'pic4.gif', 
      text: 'children2', 
      leaf: true}, 
     { 
      icon: 'pic5.gif', 
      text: 'children3', 
      leaf: true}]}], 

    }, 
{ 
    text: 'Parent2', 
    icon: 'pic6.gif', 
    children: [{ 
     icon: 'pic7.gif', 
     text: 'children4', 
     leaf: true}, 
    { 
     icon: 'pic8.gif', 
     text: 'children5', 
     leaf: true}, 
    { 
     icon: 'pic9.gif', 
     text: "children6", 
     leaf: true}]}]; 
Ext.onReady(function() { 
    var tree = new Ext.tree.TreePanel({ 
     loader: new Ext.tree.TreeLoader(), 
     width: 1000, 
     height: 1000, 
     renderTo: Ext.getBody(), 
     root: new Ext.tree.AsyncTreeNode({ 
      expanded: false, 
      leaf: false, 
      icon: 'pic.gif' 

      , 
      text: 'Head', 
      children: children 
     }) 
    }); 
}); 
+0

노드가 확장되면 어떻게 되나요? 즉, pic1.gif 노드를 클릭하면 자식 노드가 표시되므로 pic1.gif를 다른 것으로 바꾸고 싶습니까? – JamesHalsall

+0

@Jaitsu : 맞아. 나는 똑같이 필요했다. – master123

답변

3

당신은 노드가 beforeexpand 리스너를 사용하여 확장 될 때 아이콘 변경을 트리거해야합니다 당신은 또한 다른 노드가를 반복 할 수

var children = [{ 
    text: 'family', 
    icon: 'pic1.gif', 
    listeners: { 
     'beforeexpand': function(node) { 
      node.setIcon('newImage.gif'); 
     } 
    } 
    children: [{ 
    //... 

.

+0

도 비슷한 질문이 있습니다. 불행히도 나는 볼 수 없었습니다. beforeexpand 이벤트는 treepanel입니다. 제안 사항이 있으십니까? 그리고 수신 된 컴포넌트 setIcon ('newImage.gif'); 또한 사용할 수 없다. – vajrakumar

관련 문제