我正在刷新下拉列表的条形图。我只是想知道我是以正确的方式做到这一点。每当我用新的画布替换现有画布时,在我的代码中。 有没有更好的方法来实现同样的目标?
我的JS代码:
var chart_= function () {
$('#canvas_id').replaceWith('<canvas id="canvas_id" style="height:280px"></canvas>');
$.ajax({
type: 'POST', //post method
url: 'url', //ajaxformexample url
dataType: "json",
success: function (result, textStatus, jqXHR)
{
// GENERATE CHART DATA
var labels = result.obj.map(function (e) {
return e.label;
});
var data = result.obj.map(function (e) {
return e.data;
});
new Chart($("#canvas_id"), {
type: 'bar',
options: options_object,
data: {
labels: labels,
datasets: [
{
label: "",
backgroundColor: '#00c0ef',
data: data
}
]
}
});
}
});
};
答案 0 :(得分:4)
绝对是一些更好的方法,我一直在使用Chart.js进行一些实时更新图表,并且一个很好的方法来完成你想要的是声明一个图表,其中包含一些最初预定义的设置。
var chart = new Chart( canvas, {
type: "bar",
data: {}
options: {}
}
这样,只要您需要更新图表,就可以访问现有图表。并将数据更新为您从ajax调用获得的数据,并使用chart.update()方法,以便您可以继续使用预先存在的画布
$.ajax({
type: 'POST', //post method
url: 'url', //ajaxformexample url
dataType: "json",
success: function (result, textStatus, jqXHR)
{
chart.data = result;
chart.update();
}
});
希望这有帮助!