Echarts插件中的data绑定一个变量,后面通过访问后端接口获取数据给这个变量,Echarts插件无法渲染数据

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值