Не работает контекстное меню панели управления extjs

var menu1 = new Ext.menu.Menu({
        items: [
                {
                text: 'Open in new tab'

            }
        ]
    });
 var treePanel = Ext.create('Ext.tree.Panel', {
    id: 'tree-panel',
    region:'center',
    useArrows: true,
   singleExpand: true,
  split: false,
    height: 360,
    minSize: 150,
    rootVisible: false,
    autoScroll: true,
    store: store,
    border:false,
   columns:[
            {
                    xtype: 'treecolumn',
                    dataIndex: 'text',
                    flex: 2,
                    sortable: true,
                    displayField : true
            }
   ]

});
treePanel.on('contextmenu', function(event,node){
            alert(node)
            //treePanelCurrentNode = node;
            x = event.browserEvent.clientX;
            y = event.browserEvent.clientY;
            menu1.showAt([x, y]);
    },this);

Работа с 4.1 ext js и попытка добавить контекстное меню к этой панели дерева, но меню не работает. В магазине панели дерева появится но мой код

treePanel.on('contextmenu', function(event,node){};

не работает  не событие

treePanel.on('click', function(event,node){};

Любая идея связана с контекстным меню ext js на панели дерева?

Ответ 1

У дерева нет события contextmenu в ExtJS4. Вы должны использовать itemcontextmenu:

treePanel.on('itemcontextmenu', function(view, record, item, index, event){
            alert(record)
            //treePanelCurrentNode = record;
            menu1.showAt(event.getXY());
            event.stopEvent();
    },this);

Ответ 2

Когда отображается представление данных, он отключает меню браузера по умолчанию правой кнопкой мыши, это вызывается в событии "визуализация" слушателей, а событие "itemcontexmenu" предназначено для обнаружения события щелчка мыши правой кнопкой мыши, захвата позиции курсора мыши и отображения меню.

  listeners: {


        render: function() {
             Ext.getBody().on("contextmenu", Ext.emptyFn, null, {preventDefault: true});
        },
        itemcontextmenu : function( grid, record, item, index, event){
            x = event.browserEvent.clientX;
            y = event.browserEvent.clientY;

            menu1.showAt([x, y]);


        }
}