Пункт меню EXT js Button отключить

У меня есть кнопка extjs «Заказ» с пунктами меню «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();


person Jemin    schedule 13.06.2011    source источник


Ответы (3)


Вы можете добиться этого с помощью метода setDisabled для кнопки. То есть:

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

Если вы хотите применить это ко всем элементам в вашем меню, вы можете сделать это:

Ext.getCmp('menu-order-insurance').items.each(function(item) {
    if (item.isXType('button')) {
        item.setDisabled(true); // your condition here
    }
});
person Torbjörn Hansson    schedule 13.06.2011
comment
На самом деле я хочу скрыть кнопку. Я пытался отключить ее, используя приведенный выше код, даже если она не работает. - person Jemin; 13.06.2011
comment
Я на самом деле использую EXT 2.2 - person Jemin; 13.06.2011
comment
Чтобы что-то скрыть, вы можете использовать метод .setVisible([bool]) для кнопки. Однако я не уверен, как вы создаете меню в приведенном выше примере. Что такое «extManager»? И где вы запускаете логику, чтобы сделать кнопку видимой? Был ли он создан в тот момент, когда вы пытаетесь получить к нему доступ и т. д.? - person Torbjörn Hansson; 13.06.2011
comment
@Jemsworld Не думаю, что для этого кода есть какие-либо связанные изменения между 2.2 и 4.0. - person Torbjörn Hansson; 13.06.2011
comment
extManager — это пространство имен, используемое в нашем проекте. На самом деле я удалил extmanager при объявлении и забыл удалить в меню. Рассмотрим это как меню: orderInsuranceMenu. Код умеет отображать кнопку с элементами меню. Но я не могу скрыть пункты меню. Как вы указали, функция setVisible/setDisable недоступна в extmanager 2.2. Вот ссылка API senchaexperts.com/api/extjs2.2 Не могли бы вы предоставьте любое другое решение, чтобы скрыть пункты меню, было бы очень полезно - person Jemin; 14.06.2011

Решение:

В Extjs 2.2 нет способа показать или скрыть элемент меню с помощью isVisible. Поэтому после долгих копаний и проверок в firebug я нашел окончательное решение: скрыть или показать конкретный элемент, как показано ниже.

extManager.orderInsuranceMenu.items.items[1].hide();
orderInsuranceMenu.items.items[1].show();
person Jemin    schedule 16.06.2011

Вы можете использовать метод setVisible, доступный в 2.2, в пунктах меню. http://i.stack.imgur.com/kdw7f.png

Если по какой-то причине это не работает, я бы прибег к удалению пункта из меню, а затем добавлял его обратно в меню, когда это необходимо.

person rdougan    schedule 14.06.2011