我们都知道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();