ExtJS 4 - 在窗口调整大小时,溢出的工具栏会丢失其控制器

时间:2013-12-13 20:28:38

标签: javascript extjs extjs4.2

我有一个视口,附有以下工具栏:

{
    xtype: 'toolbar',
    enableOverflow:true,
    items:[
        {
            xtype: 'button',
            text: 'Open',
            id: 'MapOpenButton',
            iconCls: 'icon-folderopen',
            tooltip: 'Open map'
        },
        {
            xtype: 'button',
            text: 'Save',
            id: 'MapSaveButton',
            iconCls: 'saveCls',
            tooltip: 'Save map'
        },
        {
            xtype: 'button',
            text: 'Close',
            id: 'MapCloseButton',
            iconCls: 'closeCls',
            tooltip: 'Close map'
        }
    ]
}

我让这个控制器听按钮:

Ext.define('controller.Main', {
    extend: 'Ext.app.Controller',
    views: [
        'Main'
    ],
    init: function (application) {
        this.control({
            "#MapOpenButton": {
                click: this.OpenMap
            },
            "#MapSaveButton": {
                click: this.SaveMap
            },
            "#MapCloseButton": {
                click: this.CloseMap
            }
        });
    }
});

这样可以完美地工作,直到调整窗口大小并强制工具栏创建溢出菜单。问题是菜单重新创建具有不同属性的元素(例如新的id)。当工具栏溢出时,控制器停止监听按钮,直到窗口大小恢复并且工具栏再次恢复正常。

有解决方法吗?除了将处理程序直接添加到按钮之外。我尝试使用itemID而不是ID,但它也不起作用。

谢谢!

1 个答案:

答案 0 :(得分:0)

使用itemId而不是id(这不是一个好习惯)并且这样做:

this.control({      “按钮[的itemId = someId”:{       点击:this.onClickOfMyButton       } });

祝你好运。