传奇不更新

时间:2011-12-23 12:50:09

标签: javascript sencha-charts

我似乎遇到了传说中的问题

当数据在stor中更改时,饼图会更新,但图例不会更新。

但令我惊讶的是,当我们重置饼图时,它会更新一次,就像我在交互中使用重置选项一样。

我不知道为什么传奇没有第一次更新的确切问题。

当我为商店使用硬代码值时,传说在第一个版本处得到更新。对于动态值,只有图例没有正式更新。

请参阅我的代码的某些部分,

    PieChart = new Ext.chart.Chart( {

                               cls: 'pie1',

                               theme: 'Demo',

                               store: store1
                               shadow: true,

                               animate: true,

   legend: {
     position: 'top'

    //  dock: false
},
   interactions: [ {

                   type: 'reset',
                  confirm: true
                  }],


series:
    [ {

        type: 'pie',

        renderer: function(sprite, storeItem, barAttr, m, store11) {

            barAttr.fill = colors1[m % colors1.length];

            return barAttr;

        },

        field: 'data1',

        showInLegend: true,

        highlight: false,

        donut: 15,

        listeners: {

            'labelOverflow': function(label, item) {

                item.useCallout = true;

            }

        },

        callouts: {

            renderer: function(callout, storeItem) {

                callout.label.setAttributes( {

                    text: storeItem.get('Horizontal')

                }, true);

            },

            filter: function() {

                return false;

            },

            box: {

                //no config here.

            },

            lines: {

                'stroke-width': 2,

                offsetFromViz: 10

            },

            label: {

                font: 'italic 14px Arial'

            },

            styles: {

                font: '14px Arial'

            }

        },

        label: {

            field: 'Horizontal',

            display: 'rotate',

            font: '5px Arial'

        }

    }]

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我将数据保存到商店

时使用以下代码解决了这个问题
var hrPieChart = hrPanel.items.getAt(0);
            hrPieChart.legend = new Ext.chart.Legend( {
                chart: hrPieChart,
                position: 'top',
                    dock: false
            });
            var fieldNames = [];
            hStore.each(function(rec) {
                fieldNames.push(rec.get('data1'));
            });
            hrPieChart.series.getAt(0).yField = fieldNames;
            hrPieChart.redraw(false);

答案 1 :(得分:0)

要在Sencha Touch(图表v1.0.0)中更新图表的图例,您只需加载商店,然后在回调中执行updateStore()

var updateLegend = function(){
     store.getProxy.url = 'someData.json'; // Omit if new data is from original source.
     store.load({
        callback: function(records, options, success){
            if (success === true){
                var legend = chart.legend;
                legend.view.updateStore();
            }
        }
    });
}