2011-04-19 82 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