EXT js禁用按钮菜单项



我有一个extjs按钮"Order",该按钮的菜单项为"orderInsuranceMenu"。我需要根据某些条件隐藏菜单项。我怎样才能实现

orderInsuranceMenu = {
    id: 'menu-order-insurance'
    ,items: [
          { 
            id:'btnMenu1',
            text: 'Test Buton1',
            iconCls: 'icon-cls',
            listeners: {
                click: function(b,e){  
                   //some code goes here
                }
            }
        }
        ,{
            id:'btnMenu2',
            text: 'Test Buton2',
            iconCls: 'icon-first-title',
            listeners: {
                click: function(b,e){  
                    //Some code here
                }
            }
        }
    ]
};

Order = new Ext.Button({
    text: 'Order '
    , iconCls: 'icon-go'
    , disabled: true
    , menu: orderInsuranceMenu
    , handler: function() {
    }
});

我试过这个代码,但它不起作用:

Ext.getCmp('btnMenu2').hide();

您可以使用按钮的方法setDisabled来实现这一点。I.e:

Ext.getCmp('btnMenu2').setDisabled(true);

如果你想将其应用于菜单中的所有项目,你可以这样做:

Ext.getCmp('menu-order-insurance').items.each(function(item) {
    if (item.isXType('button')) {
        item.setDisabled(true); // your condition here
    }
});

解决方案:

在Extjs 2.2中,没有使用isVisible显示或隐藏菜单项的方法因此,经过大量的挖掘和检查,我发现最后的解决方案是隐藏或显示特定的物品,如下所示

extManager.orderInsuranceMenu.items.items[1].hide();
orderInsuranceMenu.items.items[1].show();

您可以在菜单项中使用2.2中提供的setVisible方法。https://i.stack.imgur.com/kdw7f.png

如果出于某种原因,这不起作用,我会将该项目从菜单中删除,然后在需要时将其重新添加到菜单中。

最新更新