itemmousedown イベントは「シリーズ」によって発生します。シリーズはコンポーネントではなく、レイアウト後にチャートによってのみ初期化されます。したがって、シリーズ オブジェクトへの参照を取得するには、チャートの afterlayout イベントを待つ必要があります。しかし残念ながら、チャートは afterlayout イベントを発生させていません...そのため、最初にチャートの afterComponentLayout メソッドをオーバーライドして、イベントを発生させます。
Ext.define('MyNewChart',{
extend: 'Ext.chart.Chart',
afterComponentLayout: function(width, height, oldWidth, oldHeight) {
this.callParent(arguments);
this.fireEvent('afterlayout', this);
}
});
次に、新しいチャート クラスを使用してチャートを作成します。
Ext.create('MyNewChart', {
id: 'myChart',
...
});
これで、実際に itemmousedown イベントでリスナーを作成するコントローラーを作成できます。
Ext.define('Gamma.controller.ControlFile', {
extend : 'Ext.app.Controller',
initializedEvents: false,
init: function() {
this.control({
'#myChart': {
afterlayout: this.afterChartLayout
}
});
},
afterChartLayout: function(){
if(this.initializedEvents==true) return;
this.initializedEvents=true;
Ext.getCmp('myChart').series.items[0].on('itemmousedown',function(obj){
console.log(obj);
});
}
});
ここに実用的なフィドルがあります:http://jsfiddle.net/qjfBC/