我在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>'
}]
});
提前致谢。
答案 0 :(得分:0)
您只需存储对窗口this.win = Ext.create({ xtype: 'gxWindow' })
的引用即可。然后您可以在每次需要时使用。如果您还需要在窗口中引用面板,请在窗口配置中传递它:this.win = Ext.create({ xtype: 'gxWindow', panel: this })
。
另外你应该注意,你应该在面板被摧毁时销毁窗口,否则你将有潜在的memleak。