0

我是 ExtJS 的新手,我有一个 TreePanel,我已经添加了一个上下文菜单。我的 TreePanel 和上下文菜单定义如下:

Ext.define('UserMgmt.view.rightContainer', {
    extend: 'Ext.container.Container',
    alias: 'widget.rightcontainer',

    initComponent: function() {
        var me = this;

        // context menu for TreePanel
        var contextMenu = new Ext.menu.Menu({
            itemId: 'contextMenuForTreePanel',
            items: [
                {
                    text: 'Expand all',
                    itemId: 'expandAllNodes'
                },
                {
                    text: 'Collapse all',
                    itemId: 'collapseAllNodes'
                }
            ]
        });

        Ext.applyIf(me, {
            items: [
                {
                    xtype: 'treepanel',
                    itemId: 'myTreePanel',
                    columns: [
                        {
                            xtype: 'treecolumn',
                            dataIndex: 'name',
                        },
                        {
                            xtype: 'gridcolumn',
                            dataIndex: 'permission',
                        }
                    ],
                    listeners: {
                        itemcontextmenu : {
                            fn: function(view, record, item, index, event) {
                                console.log("Right-clicked on " + record.get('name'));
                                contextMenu.showAt(event.getXY());
                                event.stopEvent();
                            }
                        }
                    }
                }
            ]
        });

        me.callParent(arguments);
    }
});

正如我所期望的那样,这很有效。当我右键单击树节点时,我看到弹出的上下文菜单带有“全部展开”和“全部折叠”菜单项。我遇到的问题是在我的控制器中为上下文菜单项连接事件处理程序。

在我的控制器中,我一直在连接这样的事件处理程序:

init: function() {
    this.control({
        'combobox#myComboBox': {
            select: this.onComboBoxSelect
        },
        'treepanel#myTreePanel': {
            itemclick: this.onTreePanelItemClick
        }
    });
}

这些事件处理程序工作正常。不幸的是,我似乎无法提出一个组件查询来匹配我的上下文菜单项,因此我可以为它们连接一个单击事件处理程序。我原以为会是这样的:

contextMenuForTreePanel#expandAllNodes

或者

rightcontainer#expandAllNodes

然而,这些似乎都没有正常工作。谁能告诉我我做错了什么?谢谢!

4

1 回答 1

1

上下文菜单不是树面板的子项。不过,当您将 itemId 分配给它时,您可以使用#contextMenuForTreePanel

于 2014-04-29T18:27:17.673 回答