ExtJs5 Как добавить плавающее окно на панель как элемент?

Я пишу свое приложение в структуре MVVM. У меня есть кнопки как элементы в GeoPortal.geox.components.MapToolbar. в моем представлении (GeoPortal.view.map.Map) я использую эту панель инструментов, и кнопки панели инструментов имеют действия в моем viewController (GeoPortal.view.map.MapController). Теперь эта панель инструментов должна быть плавающей, поэтому я поместил ее в плавающее окно. Но для доступа к действиям кнопки это окно должно быть элементом панели.

Я попытался добавить элемент, как в приведенном ниже коде, но получил эту ошибку:

TypeError: me.floatingItems is undefined

GeoPortal.view.map.Map:

Ext.define("GeoPortal.view.map.Map",{
    "extend": "GeoPortal.geox.components.Panel",
    "controller": "map",
    "viewModel": {
        "type": "map"
    },
    "uses": ['GeoPortal.geox.components.MapToolbar',
        'GeoPortal.geox.components.MapInfobar',
        'GeoPortal.geox.components.Window'
    ],
    initComponent: function () {

        var win = Ext.create({
            xtype: 'gxWindow',
            id: 'mapToolbarWindow',
            items: [{
                xtype: 'gxMapToolbar'
            }]
        });

        // FIX this
        this.add(win);
        this.callParent();
    },

    listeners : {
        afterrender: {
            fn: function () {
                Ext.getCmp('mapToolbarWindow').show();
            }
        }
    },
    "region": 'center',
    "collapsible": false,
    "collapsed": false,
    "xtype": "mapPanel",
    items: [{
        xtype: 'gxMapInfobar'
    }, {
        html: '<div id="map" class="map"></div>'
    }]
});

Заранее спасибо.


person kursat    schedule 28.08.2014    source источник


Ответы (1)


Вы можете просто сохранить ссылку на окно this.win = Ext.create({ xtype: 'gxWindow' }). Затем вы можете использовать каждый раз, когда вам нужно. Если вам также нужно иметь ссылку на панель в окне, передайте ее в конфигурации окна: this.win = Ext.create({ xtype: 'gxWindow', panel: this }).

Также вы должны помнить, что вы должны уничтожить окно, когда панель будет уничтожена, иначе у вас будет потенциальная утечка памяти.

person Krzysztof    schedule 29.08.2014