Маска загрузки диаграммы Extjs - PullRequest
0 голосов
/ 05 мая 2011

Есть ли способ маскировать график при загрузке?В LineChart есть событие afterrender, в магазине - load, но это не то, что мне нужно.Я вижу достаточную задержку между ними и окончательным отображением графика.tnx

Env: extjs 3.3.1.вспышка

  var chart = new Ext.chart.LineChart({
                    id: 'chart1',
                    store: store,
                    xField: 'name',
                    yField: 'visits',
                  listeners: {
                    'afterrender': function() {
                      Ext.getCmp('chart1').getEl().unmask();
                    }
                }
            });

Ответы [ 3 ]

1 голос
/ 09 сентября 2011

Какого черта вы используете getCmp в случае этого компонента? Функция имеет аргументы:

listeners: {
    afterrender: function(chart) {
        chart.getEl().unmask();
    }
}

Кроме того, помните об утечках памяти, так как это будет держать слушателя на этом графике до тех пор, пока он не будет уничтожен, но он будет рендериться только один раз

listeners : {
    afterrender : {
        single : true,
        fn     : function(chart) {
            chart.getEl().unmask();
        }
    }
}

При использовании single = true он удалит себя после первого запуска события. Вы также можете установить задержку и передать число (в миллисекундах), чтобы задержать срабатывание, буфер (не для последующего вывода) и передать число (в миллисекундах), и все те же события в пределах количества миллисекунд будут включены в одно событие стрельба, область, чтобы изменить область функции. Некоторые другие, но это лучшие 4 варианта.

0 голосов
/ 09 сентября 2011

Я думаю, что это решит вашу проблему

store.load({
         scope: this,
        callback: function(records, operation, success) {

 Ext.getCmp('chart1').getEl().unmask();

}
});

В противном случае вы можете использовать событие активации диаграммы, чтобы снять маску.

0 голосов
/ 12 мая 2011

Попробуйте перехватывать события render или beforerender.

...