Как я могу программно вызвать событие на панели? - PullRequest
0 голосов
/ 07 декабря 2010

У меня есть следующее меню в соответствии с.

Пользователь нажимает на заголовки панелей и регион в середине изменений, который работает.

Однако я всегда хочу программно щелкайте по панелям, например, чтобы я мог создавать гиперссылки в тексте, которые открывают панели, как если бы пользователь нажимал на них.

Как программно вызвать щелчок по событиюна панели в моем меню аккордеона, что-то вроде этого:

Ext.select('span#internal_link_001').on('click', function() {
    Ext.getCmp('panelApplication').trigger('click'); //error "trigger is not a function"
});

Код меню аккордеона:

Ext.onReady(function(){

    menuItemStart = new Ext.Panel({
        id: 'panelStart',
        title: 'Start',
        html: 'This is the start menu item.',
        cls:'menuItem'
    });

    menuItemApplication = new Ext.Panel({
        id: 'panelApplication',
        title: 'Application',
        html: 'this is the application page',
        cls:'menuItem'
    });

    menuItemModules = new Ext.Panel({
        id: 'panelModules',
        title: 'Modules',
        layout: 'card',
        html: 'this is the modules page',
        cls:'menuItem'
    });

    menuItemSettings = new Ext.Panel({
        id: 'panelSettings',
        title: 'Settings',
        layout: 'card',
        html: 'this is the settings page',
        cls:'menuItem'
    });

    var regionMenu = new Ext.Panel({
        region:'west',
        split:true,
        width: 210,
        layout:'accordion',
        layoutConfig:{
            animate:true
        },
        items: [ menuItemStart, menuItemApplication, menuItemModules, menuItemSettings ]
    });
    ....

1 Ответ

3 голосов
/ 07 декабря 2010

Почему бы вам не использовать соответствующие функции компонентов:

Ext.onReady(function(){

    menuItemStart = new Ext.Panel({
        id: 'panelStart',
        ...
    });

    menuItemApplication = new Ext.Panel({
        id: 'panelApplication',
        ...
    });

    menuItemModules = new Ext.Panel({
        id: 'panelModules',
        ...
    });

    menuItemSettings = new Ext.Panel({
        id: 'panelSettings',
        ...
    });

    var regionMenu = new Ext.Panel({
        ...
        layout:'accordion',
        items: [ menuItemStart, menuItemApplication, menuItemModules, menuItemSettings ]
    });

    Ext.select('span#internal_link_001').on('click', function() {
        regionMenu.getLayout().setActiveItem('panelApplication' /* use the ID or the numeric index */);
    });
}
...