Extjs4 访问边框布局的不同区域

Extjs4 访问边框布局的不同区域,extjs4,extjs4.1,Extjs4,Extjs4.1,在Sencha的边界布局API中,它说: ExtJS 4.0中没有BorderLayout.Region类+ 我在各种博客上找到的访问中心面板的方法如下: var viewPort = Ext.ComponentQuery.query('viewport')[0]; var centerR = viewPort.layout.centerRegion; 再次提到文档,我看到centerRegion是一个私有函数(为什么?),我不想依赖这些函数来进行将来的校对。此外,没有西部地区、北部地区等 如

在Sencha的边界布局API中,它说:

ExtJS 4.0中没有BorderLayout.Region类+

我在各种博客上找到的访问中心面板的方法如下:

var viewPort = Ext.ComponentQuery.query('viewport')[0];
var centerR = viewPort.layout.centerRegion;
再次提到文档,我看到
centerRegion
是一个私有函数(为什么?),我不想依赖这些函数来进行将来的校对。此外,没有西部地区、北部地区等

如何获得这些项目?
我当然可以得到区域内的项目:各种面板,等等,但是我想要完全控制保存边框布局的视口。 这就是我现在正在做的:

    var viewPort = Ext.ComponentQuery.query('viewport')[0];
    var view = Ext.widget('my-new-tab-panel');

    viewPort.layout.centerRegion.removeAll();
    viewPort.layout.centerRegion.add(view);

有更好的方法吗?

通常,我会为每个需要使用的容器设置一个id。因此,我的中心区域将有一个id,我将使用Ext.getCmp()函数获取它

否则,要访问视口项目,可以执行以下操作:

var viewPort = Ext.ComponentQuery.query('viewport')[0];
var view = Ext.widget('my-new-tab-panel');

viewPort.items.items[0].removeAll();
viewPort.items.items[0].add(view);
如果已将中心区域定义为视口的第一项,则上面的代码可以,但如果已将其定义为第三项或第四项,则必须根据区域的位置(viewport.items[3]或viewport.items[4]等)更改索引

另一种方法是使用查询选择器:

var cr = viewPort.down('panel[region=center]');
cr.removeAll();
cr.add(view);
然而,按照这种方式,您必须精确地查询xtype(本例中为面板)


无论如何,我认为最好的方法是为每个地区使用一个id。

10x作为您的答案。几点意见:一,。这是Extjs4.1,我想尽量避免
Ext.getCmp()
。我改用查询。2.使用物品听起来很危险。因为您依赖于项目订单。从来都不是好事。3.我试过了<代码>项目不起作用。您需要使用
viewPort.items.items[0]
,如果您的西部地区排名第二,它将显示在
items[2]
而不是
items[1]
,因为边框布局会自动添加拆分器。我会接受您的答案,主要是因为您使用了
[region=center]
,但对我来说,这仍然不是正确的答案。10倍。谢谢。如果您找到更好的选择器,请告诉我;)西亚兹!