(ExtJS 4.2.2)可以';无法获取非';我一直不活跃

(ExtJS 4.2.2)可以';无法获取非';我一直不活跃,extjs,force-layout,deferred-rendering,Extjs,Force Layout,Deferred Rendering,我有一个集装箱 items: [{ xtype: 'container', layout: 'card', flex: 1, itemId: 'tab-container', deferredRender: false, items: [ { xtype: 'panel', layout:

我有一个集装箱

items: [{
            xtype: 'container',
            layout: 'card',
            flex: 1,
            itemId: 'tab-container',
            deferredRender: false,
            items: [ {
                xtype: 'panel',
                layout: 'fit',
                dockedItems: [routessearch],
                items: [routes]
            }, {
                xtype: 'panel',
                layout: 'fit',
                forceLayout: true,
                dockedItems: [routessearch],
                items: [routesSubs]
            }]
        }]
加载页面时,我可以获得第一个选项卡,因为它已经处于活动状态。但我无法获取第二个选项卡,因为它尚未创建


我尝试使用deferredRender:false和forceLayout:true(就像在代码示例中一样),但它不起作用。

在ExtJs中,您应该与组件交互,而不是直接与dom交互

因此,当您替换
var elements=document.querySelectorAll(查询)时带有
Ext.ComponentQuery.query(查询)您可以获得一个匹配组件的数组,并可以和它们交互

从Sencha文件中:

提供Ext.ComponentManager中组件的搜索 (全局)或文档上具有的特定Ext.container.container 类似于CSS选择器的语法。返回匹配的数组 组件或空数组

因此,在组件查询
Ext.ComponentQuery.query('#tab container>panel')
之后,就有了所有的内部面板。 使用
second=components[1]
可以引用第二个组件。 现在您可以与组件交互。
但是当您还需要访问组件的dom时,可以通过
second.getEl().dom
获得它

因此,完整的代码如下所示

Ext.create('Ext.container.Container', {
    renderTo: Ext.getBody(),
    width: 200,
    height: 200,
    layout: 'card',
    itemId: 'tab-container',
    deferredRender: false,
    items: [{
        title: 'P1'
    }, {
        title: 'P2'
    }],
    listeners: {
        boxready: function () {
            var components = Ext.ComponentQuery.query('#tab-container > panel');
            var second = components[1];
            var el = second.getEl();
            var dom = el.dom;
            // code to interact with the component or with the dom
        }
    }
});

请参阅中的代码。

你所说的“获取标签”到底是什么意思?你能发布你的代码吗?你能创建fiddle来说明你的问题吗?请添加你试图访问secound标签的代码。大家好!谢谢你的回答。我正试图以下一种方式获取tab:var elements=document.querySelectorAll(查询);问题在于,第二个选项卡只有在我单击它时才会呈现。在尝试获取选项卡时单击之前,我收到了空数组。但当我至少打开一次它选项卡时,我将在下次尝试时得到项目列表而不是空数组。这是因为选项卡将已呈现。问题是如何使面板具有两个渲染选项卡?