首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ext JS 3.4惰性渲染折叠面板-面板的强制渲染

Ext JS 3.4惰性渲染折叠面板-面板的强制渲染
EN

Stack Overflow用户
提问于 2012-12-13 23:51:17
回答 1查看 2.9K关注 0票数 0

我将一个大型应用程序从v2升级到v3.4

我有一个有n>1个面板的手风琴。默认情况下,第一个是展开的,所有其他的都不是。与ExtJS2现在的Ext3.4不同,面板直到它们首先被展开才会被呈现。这会导致多个问题,因为有些代码路径要求元素已经在DOM中。

deferredRender对手风琴没有任何影响,它只是用于制表符。

我尝试的方法:迭代所有项并调用setActiveItemsetActive,但这只会导致实际呈现最后一个面板,所有其他面板仍然不在DOM中(我认为激活元素是异步的,即使animatefalse)。

我如何告诉手风琴渲染所有面板,即使它们一开始是折叠的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-14 19:05:15

使用accordion布局的面板中的所有组件都会立即渲染。示例:http://jsfiddle.net/P5Gen/3/

注意,子组件是在容器上触发afterrender事件后呈现的。子对象的实际呈现是由布局完成的,因此标记在触发afterlayout事件后可用。

要强制布局(以及强制子对象渲染),可以调用container.doLayout(false, true)

如果您需要在每个具有折叠布局的容器上调用doLayout,您可以使用ComponentMgr来实现。示例:

代码语言:javascript
复制
Ext.ComponentMgr.all.on('add', function(index, component){
    if (!(component instanceof Ext.Container)) {
        return;
    }
    if (component.layout !== 'accordion' && !(component.layout instanceof Ext.layout.AccordionLayout)) {
        return;
    }

    component.on('afterrender', function(sender) {
        // do layout or something else
        sender.doLayout(false, true);
    });
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13863463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档