繁体   English   中英

Ext JS 3.4延迟渲染手风琴-面板的强制渲染

[英]Ext JS 3.4 lazy rendering accordions - force render of panels

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

我有一个n> 1个面板的手风琴。 默认情况下,第一个扩展,而其他所有不扩展。 与现在带有Ext 3.4的Ext JS 2相反,只有先扩展面板后才渲染面板。 这会导致多个问题,因为某些代码路径要求元素已经在DOM内。

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

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

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

AFAIK将立即呈现面板中具有accordion布局的所有组件。 示例: http//jsfiddle.net/P5Gen/3/

请注意,在容器上触发afterrender事件之后,将渲染子组件。 子代的实际渲染是通过布局进行的,因此标记在afterlayout事件后可用。

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

如果您需要在每个具有手风琴布局的容器上调用doLayout ,则可以使用ComponentMgr来做到这一点。 例:

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);
    });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM