3

我正在使用 ExtJS 4(beta 3)并且我有一个 TreePanel,它是我的导航菜单。它是这样的:

  • 工作
    • 添加工作
    • 列出所有工作
  • ...
    • ...
    • ...

(这将在权限系统基础上进行,但这是另一回事)

在 ExtJS 3 上,当我单击“添加作业”时做一些事情就像添加一样简单

...
leaf:true,
listeners:{
click:function(n){
       //my code...
   }
}
...

到根子元素。

现在没那么简单了。我离得越近(在树面板上)

listeners:{
    click : {
             element : 'el',
             fn : function(eve, elem, obj){
                   console.log(node);
                   console.log(elem);
                   console.log(obj);
                  }
    }
}

所以,也许我只是一个菜鸟,也许我已经对 ExtJS 有强烈的仇恨,也许只是这个 beta 版本的一个问题,但是......

如何为树节点上的单击事件添加侦听器?(选择事件不会做我需要的)

感谢你们。

编辑:目前正在对此进行测试,但它不起作用。

 ... = Ext.create('Ext.tree.TreePanel', {
                        region      : 'west',
                        collapsible : false,
                        title       : 'ITMI',
                        width       : 220,
                        margins     : '5 5 5 5',
                        cmargins    : '5 5 5 5',
                        hideHeaders : true,
                        useArrows   : true,
                        rootVisible : false,
                        headers: [{
                                xtype    : 'treeheader',
                                text     : 'Nome',
                                flex     : 1,
                                dataIndex: 'nome'
                            }],
                        store: store,
                        listeners:{
                            itemclick: function(n){
                                console.info(n);
                            }
                        }
    ...

编辑 2: itemclick 事件现在有效(在 EXJS 4 final 上),它仍然不能解决我的问题。当我调用每个树节点时,我想调用一个特定的函数。之前真的很简单。现在我想不通了。

4

3 回答 3

8

在 ext4 beta3 中(可能也在最终版本中)......不再有click事件......
这已更改为itemclick 更多信息

var tree = Ext.create('Ext.tree.Panel', {
    store: store,
    renderTo: Ext.getBody(),
    height: 300,
    width: 250,
    title: 'Files',

    listeners:{
        itemclick: function(n){
            console.info(n);
        }
    }

});
于 2011-04-19T17:32:09.570 回答
1

我无法使用 IE 触发 itemclick(在 Chrome 中很好)。我修改了我的代码以使用“checkchange”,它工作正常。

于 2012-06-05T19:56:32.670 回答
1

所以,它可能会帮助一些可能在我当时遇到的同样问题上苦苦挣扎的人。

“itemclick”事件是处理叶子点击的方式,但由于我不记得的原因,它当时不起作用。

我通过拆分数据库中的配置完成了我所需要的,比如

controllerName|functionName

然后在“itemclick:”的处理程序上调用此代码:

this.getController(ctr)[fn]();  

其中ctrcontrollerNamefnfunctionName。这可以通过 eval 轻松完成,但我不希望这样做。

于 2012-03-12T17:42:36.577 回答