我正在使用Ext.tree.Panel派生对象来模拟菜单导航栏。我的目标是让屏幕上的用户选项卡到达菜单,此时用户可以使用上/下/左/右键来导航菜单,方式类似于您可以使用键盘导航Windows资源管理器中的树面板。
一切都很好但我无法掌握键盘事件。好吧,它有时会在经历多次起伏之后触发,但我希望能够立即得到它。我知道这个事件正在ExtJS中处理,因为我已经看到它出现在发布函数中,它将它激发给所有感兴趣的对象。它只是没有路由到我的处理程序。任何想法为什么不呢?这是我设置处理程序的代码。我已经把它们放在了投降中,以防这个元素尚未创建出现时间问题。
Ext.define('CSSL.view.menubar.Menubar', {
extend: 'Ext.tree.Panel',
xtype: 'menubar',
controller: 'menubar',
viewModel: {
type: 'menubar'
},
listeners: {
afterrender: function (comp, eOpts) {
var el = comp.getTargetEl();
el.on('keydown', function (e, comp, x) {
console.log(e.type + ' [in menu]\r\n');
}, comp);
el.dom.addEventListener('keydown', function (e, comp, x) {
console.log(e.type + ' [in menu]\r\n');
});
},
beforeselect: 'onSelectionChange',
focus: 'onFocus',
blur: 'onBlur'
//itemkeyup: 'onItemKeyUp',
},
rootVisible: false,
等等通过其余的代码。有趣的是,将事件侦听器直接添加到Dom元素处理程序(addEventListener)确实可以正常工作。我只是想知道发生了什么,因为我宁愿使用ExtJS处理程序系统而不是基本的javascript。
由于