2017-09-01 158 views
0

我有一個可選行的網格。你可以在JS Bin找到我的代碼。Ext JS 4.1:將點擊事件監聽器添加到headerCheckbox

如何將點擊事件偵聽器添加到包含複選框的列標題中?

此代碼不起作用:

this.columns[0].on('click', function() { 
    // Do stuff 
}); 

添加監聽器複選框是好的:

this.columns[0].textEl.on('click', function() { 
    // Do stuff 
}); 

但我想整個頭部,不僅複選框,偵聽點擊事件。 :?'(

如何做到這一點分別,爲什麼我的代碼失敗

回答

0

訣竅是事件監聽器添加到headerCheckbox的元素,而不是組件本身。

this.columns[0].el.on('click', function() { 
    // Do stuff 
}); 

請參閱JS Bin

Thx to @ scebotari66指向我正確的方向!

2

this.columns[0]似乎參考你的‘第一列’其實this.columns.length回報2.這裏被存儲到列中的引用是什麼?。

此外,這些列沒有單擊事件,因此您在其元素上設置了一個點擊偵聽器

這就是說,這裏是驗證碼:

listeners: { 
    viewready: { 
     fn: function() { 
      var checkcolumnHeader = this.columnManager.columns[0]; 

      checkcolumnHeader.getEl().on('click', function() { 
       console.log('clicked'); 
      }); 
     } 
    } 
} 

而且工作小提琴:https://fiddle.sencha.com/#view/editor&fiddle/262i

+0

我假設你的解決方案的目標是ExtJS 4.2,看着你的小提琴。在ExtJS 4.1中,'this.columns [0]'確實指向複選框頭部單元。但是,您將聽衆添加到組件的元素而不是組件本身是正確的。感謝提示! :) – Thorsten