访问边框布局的不同区域

时间:2012-09-22 19:52:25

标签: extjs4 extjs4.1

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

  

ExtJS 4.0 +中没有BorderLayout.Region类

我在各种博客上找到的用于访问中心面板的内容是:

var viewPort = Ext.ComponentQuery.query('viewport')[0];
var centerR = viewPort.layout.centerRegion;

再次对文档,我看到centerRegion是一个私有函数(为什么?),我不关心那些,为了将来的证明。此外,没有westRegionnorthRegion等......

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

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

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

有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

通常,我为每个必须使用的容器设置一个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);

如果您已将中心区域定义为视口的第一项,那么上面的代码就可以了,但如果您已将其定义为第三项或第四项,那么您必须根据您的位置更改索引region(viewPort.items [3]或viewPort.items [4]等)。

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

var cr = viewPort.down('panel[region=center]');
cr.removeAll();
cr.add(view);

但是,按照这种方式,您必须查询精确的xtype(在本例中为面板)。

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