2011-05-31 108 views
1

我还有另一个问题与extjs。当我构建treeview时,我无法获得与树节点一起工作的范围。根节点的范围是我的js对象,而不是作为范围返回窗口的treenode。Extjs treePanel节点范围问题

任何想法为什么?

TreePanel中定义:

this.treeForParamPanel= new Ext.tree.TreePanel(
{ 
    layout: 'fit', 
    frame:true, 
    iconCls:'search', 

    animCollapse:false, 
    collapsedIconCls: 'search', 
    titleCollapse :true, 
    collapsible: true, 
    split:true, 
    collapsed: false, 
    animate: false, 
    lines: true, 
    id:'treeParamPanel'+this.id, 
    region:region, 
    title: 'aaa', 
    anchor:'100%', 
    //rootVisible:false, 
    width: 200, 
    height:300, 
    border:false, 
    autoScroll:true, 

    loader: new Ext.tree.TreeLoader({ 
     scope:this, 
     dataUrl:'index.php?act=index.php' 
    }) 
}); 
this.rootTreeForParamPanel = new Ext.tree.AsyncTreeNode({ 
    text: 'aaa', 
    draggable:false, 
    id:'source', 
    scope:this, 
    listeners: { 
     click: { 
      scope:this, 
      fn:function(ev) { 
       alert(this); 
      } 
     } 
    } 
}); 
this.treeForParamPanel.setRootNode(this.rootTreeForParamPanel); 

项目定义:

[ 
    { 
     "text": "testyybvnvbnvb", 
     "id": "16", 
     "leaf": true, 
     "draggable": "false", 
     "qtip": "aaa", 
     listeners: { 
      click: { 
       scope: this, 
       fn:function(ev) { 
        alert(this); 
       } 
      } 
     } 
    } 
] 

回答

2

当使用TreePanel的我通常把click事件上TreePanel中,而不是在每一个节点。如果您不需要click事件以不同的方式为每个节点进行处理,把click事件TreePanel中这样的:

this.treeForParamPanel = new Ext.tree.TreePanel(
{ 
    ... your parameters... 
    listeners: 
    { 
     click: function(node, event) { 
      alert('You have clicked on node ' + node.id); 
     }, 
     scope: this 
    } 
}); 

现在click事件的范围与创建树型面板时相同,并且您仍然可以访问用户正在点击的节点。

+0

感谢您的回答。 – 2011-05-31 14:06:46