2014-08-28 4 views
0

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

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

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>' 
    }] 
}); 

Спасибо заранее.

ответ

0

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

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

Смежные вопросы