我们都知道echarts图标数据是写在option = {}对象里,但是数据不可能是固定值,而是通过后端接口返回来的,本以为只需要在 data里设置一个变量去接收返回的数据,然后再将变量赋值给echarts就可以了,结果踩坑了!发现这样并不能生效。
原先js代码
var timeData = [];
var sumCallDuration = [];
function initEchart(){
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 绘制图表
myChart.setOption({
title: {
text: '用户通话记录统计'
},
tooltip: {},
xAxis: {
data: timeData
},
yAxis: {},
series: [
{
name: '通话时长',
type: 'bar',
data: sumCallDuration
}
]
});
}
function getMonthsData(){
$.post("/view",{
"tel": $("#tel").val(),
"calltime": $("#calltime").val()
},function (data) {
var dataList = data.data;
if(dataList.length > 0){
for (var i = 0;i < dataList.length;i++){
// 获取通话日期数据
timeData.push(dataList[i].dateid);
// 获取通话时长数据
sumCallDuration.push(dataList[i].sumDuration);
}
}
},"json");
}
getMonthsData();
initEchart();
竟然上面的写法不行,那么换一种思路,我们从后端获取数据的原因不就是为了给Echarts渲染图表,因此,我们可以将实例化Echarts写在请求函数的回调函数中
function getMonthsData(){
$.post("/view",{
"tel": $("#tel").val(),
"calltime": $("#calltime").val()
},function (data) {
var timeData = [];
var sumCallDuration = [];
var dataList = data.data;
if(dataList.length > 0){
for (var i = 0;i < dataList.length;i++){
// 获取通话日期数据
timeData.push(dataList[i].dateid);
// 获取通话时长数据
sumCallDuration.push(dataList[i].sumduration);
}
}
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 绘制图表
myChart.setOption({
title: {
text: '用户通话记录统计'
},
tooltip: {},
xAxis: {
data: timeData
},
yAxis: {},
series: [
{
name: '通话时长',
type: 'bar',
data: sumCallDuration
}
]
});
},"json");
}
getMonthsData();
本文介绍了一种在ECharts中动态加载数据的方法。通过将ECharts实例化过程置于后端数据请求的回调函数中,确保了图表能正确显示最新获取的数据。避免了因数据更新而图表未同步刷新的问题。
3487

被折叠的 条评论
为什么被折叠?



