ExtJS 7.4使用Modern创建右键单击上下文菜单



我需要在ExtJS 7.4中创建一个右键菜单,但只有childtap只触发左键单击事件。

是否有方法触发该事件或右键单击另一个?

我添加了两个解决方案。第一个是组件解决方案(这里是Grid),第二个是全局解决方案。

<<p>

组件/strong>解决方案是childcontextmenu侦听器。

看一下下面的例子(Modern toolkit 6+7)

const menu = new Ext.menu.Menu({
items: [{
text: 'Menu Item 1'
}, {
text: 'Menu Item 2'
}]
});
Ext.define('MyApp.MyGrid', {
extend: 'Ext.grid.Grid',
store: Ext.create('Ext.data.Store', {
fields: ['name', 'email', 'phone'],
data: [{
name: 'Lisa',
email: 'lisa@simpsons.com',
phone: '555-111-1224'
}]
}),
columns: [{
text: 'Name',
dataIndex: 'name',
width: 200
}],
listeners: {
childcontextmenu: function (grid, eObj) {
grid.deselectAll();
grid.setSelection(eObj.record);
menu.showAt(eObj.event.getX(), eObj.event.getY());
eObj.event.stopEvent()
}
}
})
全球

>我可以向您展示如何触发全局事件,但问题在于目标。在下面的例子中,我使用document,但您也可以使用任何view.el.on,目标将始终是视图。更多答案可以在这里找到

Ext.getDoc().on(
'contextmenu',
function(e){
Ext.GlobalEvents.fireEvent('contextmenu', e);
},
Ext.GlobalEvents
);
Ext.GlobalEvents.on('contextmenu', function(eObj) {
console.log('Who dares to RightClick me?');
});

最新更新