(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(查询);问题在于,第二个选项卡只有在我单击它时才会呈现。在尝试获取选项卡时单击之前,我收到了空数组。但当我至少打开一次它选项卡时,我将在下次尝试时得到项目列表而不是空数组。这是因为选项卡将已呈现。问题是如何使面板具有两个渲染选项卡?