Extjs图表加载掩码

时间:2011-05-05 16:17:08

标签: events extjs load charts mask

有没有办法在加载时屏蔽图表? LineChart有'afterrender'事件,商店有'加载',但它不是我需要的。 我看到他们和最终的图表渲染之间有足够的延迟。 TNX

环境: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 个答案:

答案 0 :(得分:1)

为什么你会在该组件的事件中使用getCmp?该函数有参数:

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

另外,请注意内存泄漏,因为这会将侦听器保留在此图表上,直到它被销毁但它只呈现一次

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

使用single = true时,它会在第一次触发事件后自行删除。您还可以放置延迟并传入一个数字(以毫秒为单位)来延迟触发,缓冲(不是后续处理)并传入一个数字(以毫秒为单位),并且所有相同的事件在毫秒数内将被放入一个事件中射击,范围改变功能的范围。其他一些,但那些是前4个选项。

答案 1 :(得分:0)

尝试使用render或beforerender事件挂钩。

答案 2 :(得分:0)

我认为这将解决您的问题

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

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

}
});

否则您可以使用图表的activate事件来取消屏蔽它。