2

我创建了一个 rallygrid 并将其放入作为应用程序项目列出的容器之一中。然后,该应用程序将通过 for 循环进行循环,该循环最多可能需要三分钟来创建其他网格并将其添加到页面。

  1. 应用程序会等到所有网格都被创建并添加到页面中,然后再显示其中的任何一个。将第一个添加到组件后如何显示它?

  2. 是否有一个经验法则可以以最快的方式添加一大堆东西?我为一些小的汇总数据添加了 100 多个网格。每个都有一个小数组,但我先创建一个商店,然后再创建一个网格。

  3. 虽然它在 100 多个小网格中循环,但我无法阻止它完成执行。由于整个事情是通过更改属性框开始的,因此用户更改下拉菜单在一段时间内不会做任何事情。而且我什至无法在构建时关闭 Chrome 选项卡。

4

1 回答 1

1

在渲染期间暂停 Ext 布局可能有助于加快速度:

Ext.suspendLayouts();
for (var i = 0; i < 100; i++) {
    addGrids...
}
Ext.resumeLayouts(true);

如果挂起布局仍然太慢,请尝试异步添加网格。这实际上不会加快渲染速度,但它可能会帮助 UI 感觉更灵敏。将suspendLayouts技巧与异步渲染结合起来是行不通的,你必须选择其中之一:

for (var i = 0; i < 100; i++) {
    var addGrid = function() {
        addGrid...
    }

    Ext.Function.defer(addGrid, i * 200);
}

100 格是很多 dom。无论您使用什么方法,它都可能会很慢。如果您以 IE 为目标,请小心,我怀疑 IE 中单个页面上的 100 个网格将无法使用。

于 2013-01-26T16:17:29.637 回答