ExtJS Highcharts重新图表加载掩码挂起

时间:2014-02-02 09:52:56

标签: javascript extjs charts highcharts rally

在我的代码段中,Deferred / Promise返回一个名为 myChart 的已配置的Highchart Chart对象。第一次,我的图表被添加到一个容器中,一切都完美呈现。但是,在我的逻辑执行removeAll来刷新容器的后续调用中,我的图表会使loadMask(“Loading ...”)呈现灰色,并且永久旋转。

我已经调查了myChart对象数据的方差,它看起来很稳定。我甚至试图渲染更简化的图表对象,并且在每种情况下随后的渲染都会在loadMask旋转时挂起。

有关为什么它可能挂在所有后续调用上的任何想法?

我在有些相关的线程中读到缓冲可能是一个问题,但我认为这不适用,因为我使用数组并使用存储对象将数据加载到图表中。

提前感谢任何提示或指示!

// Set chart data
that._setChartData().then({

    success: function( myChart ) {
        // Render chart
        if (gridContainer.items.length > 0) {
            // Remove/Clear container objects ... if exists
            Ext.Array.each( gridContainer.items, function( aItm ) {
                switch( aItm.itemId ) {
                    case 'topbox':
                        break;

                    case 'buttonBox':
                        if ( aItm.items.length > 0 ) {
                            aItm.removeAll( true );
                        }
                        break;

                    case 'sliderBox':
                        if ( aItm.items.length > 0 ) {
                            aItm.removeAll( true );
                        }
                        break;

                    case 'chartbox':
                        if ( aItm.items.length > 0 ) {
                            aItm.removeAll();
                        }
                        break;
                }
            });
        }
        that.down('#chartbox').add(myChart);
    }
});

1 个答案:

答案 0 :(得分:2)

我怀疑存在渲染错误,因为当我将其添加到我的代码中时(在定义应用程序之前),替换图表有效:

Ext.override(Rally.ui.chart.Chart,{
    onRender: function () {
        this.callParent(arguments);
        this._unmask();
    }
});