1

基本上我有一个对象,它定义了Highchart图表的一些属性:

var options = {
    chart: {
        renderTo: 'container',
        type: 'line',
        marginRight: 130,
        marginBottom: 25
    },
    title: {
        text: 'Monthly Average Temperature',
        x: -20 //center
    },
    subtitle: {
        text: 'Source: WorldClimate.com',
        x: -20
    },
    xAxis: {
        categories: []
    },
    yAxis: {
        title: {
            text: 'Temperature (°C)'
        },
        plotLines: [{
            value: 0,
            width: 1,
            color: '#808080'
        }]
    },
    tooltip: {
        formatter: function () {
            return '<b>' + this.series.name + '</b><br/>' + this.x + ': ' + this.y + '°C';
        }
    },
    legend: {
        layout: 'vertical',
        align: 'right',
        verticalAlign: 'top',
        x: -10,
        y: 100,
        borderWidth: 0
    },
    series: [{
        name: 'Tokyo',
        data: aCosts
    }]
};

我想从一个文件(ajax调用)更新这个对象,如下所示:

$.getJSON(
    "handler.php",
    function (oJSON) {
        var sName,
            sCost,
            aRow;
        for (sName in oJSON) {
            aRow = [];
            //categories = [];
            if (oJSON.hasOwnProperty(sName)) {
                aRow.push(sName);
                categories.push(sName);
            }
            // Create the chart
            var chart = new Highcharts.Chart(options);
        }
    }
);

问题是,我不能将新值传递给选项,因为它声明类别未定义。我试过使用:

options.categories.push(sName)
options[categories].push(sName) 

没有工作。

如何更新选项对象中的类别值?

4

2 回答 2

5

假设options$.JSON通话中可以看到,这应该有效:

options.xAxis.categories.push( sName );

如果您查看options对象的结构,您会看到,它categories位于属性下方xAxis。因此你应该解决的是这样的。

于 2013-02-01T14:30:39.387 回答
0

您只需要先定义类别,如下所示:

options.categories = [];

然后你可以把东西推到这个数组中。

编辑:您也可以将categories: []其放入您的 json 中。

于 2013-02-01T14:30:57.067 回答