あなたは正しい道を進んでいますが、まだ完全には進んでいません。コントローラーの仕事は、要素ではなくコンポーネントを制御することです。要素のマウスオーバー イベントをコンポーネント レベルで使用できるようにする場合は、別個の 'mypanelmouseover' イベントとして再起動し、それをコントローラーの control() で使用します。
素敵できれい。
編集:
方法は次のとおりです。
Ext.define('My.Panel', {
extend: 'Ext.panel.Panel',
constructor: function(config) {
var me = this;
me.callParent(arguments);
me.addEvents(
'mypanelmouseover'
);
},
afterRender: function() {
var me = this;
me.callParent();
// Declarative style with listeners reads better,
// but this is shorter and does the same
me.mon(me.getEl(), 'mouseover', function() {
this.fireEvent('mypanelmouseover')
}, me);
}
});
Ext.define('My.Controller', {
extend: 'Ext.app.Controller',
init: function() {
var me = this;
me.control({
'panel': {
mypanelmouseover: me.onMyPanelMouseover
}
});
}
});
お役に立てれば。主なアイデアは、読み取り不能なコールバック チェーンを作成するのではなく、宣言的であり続け、コードを分離することです。良い副次的効果は、あなたがコントロールでき、どのイベントをいつ、どのように反応させるかを決定できることです。