Как я могу получить доступ к меню на панели tbar в ExtJS? - PullRequest
0 голосов
/ 28 марта 2011

У меня есть медиа-сетка типа Ext.Panel.Панель содержит tbar с элементом группы кнопок, который содержит меню с флажками.Мне нужно иметь возможность получить доступ к тому, какие флажки отмечены за пределами объявления mediaGrid, но я не уверен, как это сделать.Вот объявление mediaGrid:

var mediaGrid = new Ext.Panel({
    id: 'mediaviewer',
    region: 'center',
    border: false,
    items: mediaDataView,
    style: 'border-left: 1px solid #d0d0d0',

    tbar: [
        {
            xtype: 'buttongroup',
            title: 'Filters',
            items: [
                {
                    text: 'Show',
                    icon: '/img/picture.png',
                    iconAlign: 'top',
                    menu: {
                        xtype: 'menu',
                        defaults: {
                            hideOnClick: false,
                            listeners: {
                                checkchange: function (checkitem) {
                                    var menu = checkitem.ownerCt;
                                    var values = [];

                                    if (menu.pictureCheck.checked) {
                                        values.push('picture');
                                    }
                                    if (menu.videoCheck.checked) {
                                        values.push('video');
                                    }
                                    if (menu.noteCheck.checked) {
                                        values.push('note');
                                    }

                                    if (values.length == 0) {
                                        values.push('none');
                                    }

                                    mediaStore.reload({ params: { type: values.toString()} });
                                }
                            }
                        },

                        items: [
                            {
                                text: 'Pictures',
                                checked: true,
                                ref: 'pictureCheck'
                            },
                            {
                                text: 'Videos',
                                checked: true,
                                ref: 'videoCheck'
                            },
                            {
                                text: 'Notes',
                                checked: true,
                                ref: 'noteCheck'
                            }
                        ]
                    }
                }

            ]
        },
        '->',
        {
            xtype: 'searchfield',
            store: mediaStore,
            emptyText: 'Search',
            enableKeyEvents: true,
            listeners: {
                keyup: {
                    fn: function (thisField, e) {
                        if (!e.isNavKeyPress() && thisField.isValid()) {
                            thisField.onTrigger2Click();
                        }
                    },
                    buffer: 500
                }
            }
        },
        ' ',
        ' '
    ]
});

У меня есть кнопка на другой панели, при нажатии которой открывается окно Ext.Window, чтобы добавить новый узел в GridPanel медиа.Когда пользователь нажимает «Сохранить», он должен добавить заметку в GridPanel, но он также должен проверить меню, чтобы увидеть, включен ли фильтр для отображения заметок.Вот почему мне нужно получить доступ к меню.Кто-нибудь знает, как получить доступ к этому меню в MediaGrid?

Ответы [ 2 ]

2 голосов
/ 29 марта 2011

Вы всегда можете создать объекты за пределами вашей панели, а затем просто включить их в панель. Это позволит вам иметь ссылку на них где угодно.

Например:

var menu = new Ext.menu.Menu({
    //your menu configuration
});

var tbar = new Ext.Toolbar({
    //your toolbar configuration
    //...
    items: [menu] //and so on
});

var mediaGrid = new Ext.Panel({
    //your mediagrid configuration
    tbar: tbar
});
0 голосов
/ 30 марта 2011

Вы также можете указать tbar и ID ... тогда вы можете попробовать использовать Ext.getCmp ();

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