2011-04-19 81 views
3

我使用的是ExtJS 4(测试版3),我有一个TreePanel,这是我的一种导航菜单。 它是这样的:TreeNode点击事件ExtJs 4

  • 乔布斯
    • 添加作业
    • 列出全部作业
  • ...
    • ...
    • ...

(这将在许可制度基础进行,但这是另一回事)

在ExtJS的3,做一些事情,当我点击“添加任务”是为增加

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

一样简单到根子元素。

现在并不那么简单。越接近我得到的是与(在TreePanel中)

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

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

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

谢谢你们。

编辑:目前与此测试,它不工作。

... = 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 1/4决赛),它仍然没有解决我的问题。当我打电话给每个treenode时,我想调用一个特定的函数。在它真的很容易之前。现在我无法弄清楚。

回答

7

在ext4的素β3(也许在最终发布过)......不再有click事件....
这种情况已经改变,以itemclickmore info

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); 
     } 
    } 

}); 
+0

在我的愤怒驱动搜索答案的中间,我发现了itemclick事件,当我尝试它时,它也不起作用,但是再一次,“愤怒驱动的搜索”并不是最好的。我会尝试你的代码并让你知道。谢谢您的回答。 – 2011-04-19 18:09:13

+0

好吧,没有运气。它仍然不会触发该事件。我会在上面发布我的代码片段。 – 2011-04-19 18:14:03

+0

什么是错误?只是没有射击?我可以看到你的整个代码吗?也许我可以帮你... – 2011-04-19 23:31:35

1

所以,它可以帮助一些人谁可能会遇到同样的问题。

“itemclick”事件是处理叶子点击的方法,并且因为我不记得的原因,它不起作用。

我完成我需要的东西通过分割配置我在数据库中,像

controllerName|functionName 

,然后调用此代码对“itemClick在的处理程序:

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

其中ctrcontrollerNamefnfunctionName。这可以很容易地与eval完成,但我不喜欢。

1

我无法使用IE浏览器触发itemclick(在Chrome中罚款)。我修改我的代码使用'checkchange',它工作正常。

+1

“checkchange”的问题在于,如果您希望点击所选项目时触发该事件。如果不是这种情况,“checkchange”将正常工作,否则不会。 – 2012-06-06 14:44:41