ExtJS:如何在控制器中绑定上下文菜单操作?

时间:2015-07-07 12:33:24

标签: extjs extjs5

小提琴:https://fiddle.sencha.com/#fiddle/q02

Ext.define('EController', {
    extend: 'Ext.app.ViewController',
    alias: 'controller.test',

    control: {
        '#myAction': {
            click: function() {
                alert('My action')
            }
        }
    }
});

  var sellAction = Ext.create('Ext.Action', {
        text: 'My action',
        itemId: 'myAction'
    });
    var contextMenu = Ext.create('Ext.menu.Menu', {
        items: [
            sellAction
        ]
    });

var grid = Ext.create('Ext.grid.Panel', {
        controller:'test',
...................................
        dockedItems: [{
            xtype: 'toolbar',
            items: [
                sellAction
            ]
        }],

警告在工具栏按钮中触发,但在上下文菜单中不起作用。

如何为上下文菜单按钮和工具栏按钮添加相同的侦听器? (最好的方式)

1 个答案:

答案 0 :(得分:0)

你做不到。仅仅因为,与工具栏不同,上下文菜单不是网格的一部分 - 它只是由e.getXY()处的网格显示。因此,您的control指令无法访问上下文菜单。

另一种方法是使用动作处理程序而不是控制器的control

var sellAction = Ext.create('Ext.Action', {
    text: 'My action',
    itemId: 'myAction',
    handler: function() {
        alert('My action')
    }
});

小提琴叉:https://fiddle.sencha.com/#fiddle/q0d