有没有办法在'resumelayouts'之后立即调用函数?事件处理完成?

时间:2016-02-01 12:26:05

标签: javascript extjs4.2

我更改了几十个gridpanel列的宽度。我想在表演时展示一个面具。

grid.setLoading(true);
Ext.suspendLayouts();
// columns -- grid columns
columns.forEach(function (column) {
    column.setWidth(...);
}, this);
// fires 'resumelayouts' event and immediately returns.
Ext.resumeLayouts();
// performs before everything updates its layout, which takes 3-4 seconds.
grid.setLoading(false);

1 个答案:

答案 0 :(得分:0)

问题是你最终会占用当前的“线程”,因此浏览器没有机会重新绘制。你可以这样做:

grid.setLoading(true);
setTimeout(function() {
    Ext.suspendLayouts();
    columns.forEach(function (column) {
        column.setWidth(...);
    }, this);
    Ext.resumeLayouts();
    grid.setLoading(false);
}, 1);

上面放弃了对当前“线程”的控制,并在开始布局操作之前允许重绘。