fusioncharts - 更新FusionCharts数据而不更改图表设置

时间:2014-08-26 09:14:55

标签: javascript fusioncharts

有没有办法设置Fusionchart图表"数据"仅限物业。因为当前在后一阶段设置数据时,需要传递包含" data"和"图表"属性。

以下是我的示例代码;

FusionCharts.ready(function () {
    var ageGroupChart = new FusionCharts({
        id: 'total-users',
        type: 'pie2d',
        renderAt: 'chart-container',
        width: '450',
        height: '300',
        dataFormat: 'json',
            "chart": {
                "caption": "Sample Graph",
                "enableSmartLabels": "0",
                "showPercentValues": "1",
                "showTooltip": "0",
                "decimals": "1",
                "theme": "ocean"
            },
            "data":null
        });
    ageGroupChart.setJSONUrl( "http://www.example.com/GetData.php" );
    ageGroupChart.render(); 
});

正如您所看到的,我正在设置在线来源的数据。如果在线资源不需要发送"图表"我更喜欢财产以及数据。因此,我可以将UI外观与数据源分开。

任何想法?

1 个答案:

答案 0 :(得分:3)

我在XLMhttpRequest调用中使用以下函数:

function updateChart(data) {
    var jsonData = {
        "chart": {
            // Some rendering options
            "caption": caption,
            "subcaption": ""
        },
        "data": data
    };

    // First time I initialize my chart
    if (FusionCharts("myChartId") === undefined) {
        var chart = new myChartId({
            // Some rendering options
            swfUrl: "Charts/MSLine.swf",
            id: "myChartId",
            width: "100%",
            height: "280px",
            dataFormat: 'json'
        });
        chart.setJSONData(jsonData);
        chart.render("myContainerId");
    } else
        // Then I just update
        FusionCharts("myChartId").setJSONData(jsonData);
}

我将updateChart函数调用到我的成功回调中:

success: function(data, request) {
    try {
        var d = JSON.parse(data);

        updateChart(d.chart);

        // Other job...
        var event = new CustomEvent("dataReceivedFromAjax", {"detail": d});
        document.dispatchEvent(event);

    } catch (e) {
        window.console.warn("Wrong format JSON data received");
        window.console.warn(data);
    }
}

当然,您可以根据自己的情况调整我的代码(例如我使用JsonData而不是JsonUrl)。