Bootstrap 选项卡和 Echarts

问题描述 投票:0回答:3

在第二个选项卡上显示我的 Echarts 时遇到问题。该图表仅显示在第一个选项卡上,但导航到第二个选项卡时不会显示

                                <ul class="nav nav-tabs" style="margin-bottom: 15px;">
                                    <li class="active">
                                        <a href="#campaign" data-toggle="tab">Campaigns</a>
                                    </li>
                                    <li>
                                        <a href="#subscribers" data-toggle="tab">Subscribers</a>
                                    </li>
                            </ul>
                            <div id="myTabContent" class="tab-content">
                                <div class="tab-pane fade active in" id="campaign">
                                    <div id="pieChart" style="height:500px;border:1px solid #ccc;padding:10px;"></div>

                                </div>
                                <div class="tab-pane fade" id="subscribers">
                                    <div id="barChart" style="height:500px;border:1px solid #ccc;padding:10px;"></div>
                                </div>
                            </div>

然后这是显示图表的js

    var myChart = echarts.init(document.getElementById('pieChart'));
myChart.setTheme({color:['#6CC66C','#418BCA','#ff6600']});
pieChartOption =  option = {
    title : {
        text: 'Campaign Analysis',
        subtext: 'Jackpot',
        x:'center'
    },
    tooltip : {
        trigger: 'item',
        formatter: "{a} <br/>{b} : {c} ({d}%)"
    },
    legend: {
        orient : 'vertical',
        x : 'left',
        data:['Sent','Pending','Not Delivered']
    },
    toolbox: {
        show : true,
        feature : {
            mark : {show: true},
            dataView : {show: true, readOnly: false},
            magicType : {
                show: true, 
                type: ['pie', 'funnel'],
                option: {
                    funnel: {
                        x: '25%',
                        width: '50%',
                        funnelAlign: 'left',
                        max: 1548
                    }
                }
            },
            restore : {show: true},
            saveAsImage : {show: true}
        }
    },
    calculable : true,
    series : [
        {
            name:'Access Source',
            type:'pie',
            radius : '55%',
            center: ['50%', '60%'],
            data:[
                {value:{{ $no}}, name:'Sent'},
                {value:135, name:'Pending'},
                {value:155, name:'Not Delivered'}
            ]
        }
    ]
};
myChart.setOption(pieChartOption);



/*#########################         BARCHART            ##################################*/

var myBarChart = echarts.init(document.getElementById('barChart'));

var barChartOption = {
  title: {
    text: '某地区蒸发量和降水量',
    subtext: '纯属虚构'
  },
  tooltip: {
    trigger: 'axis'
  },
  legend: {
    data: ['2014', '2015']
  },
  toolbox: {
    show: true,
    feature: {
      mark: {
        show: true
      },
      dataView: {
        show: true,
        readOnly: false
      },
      magicType: {
        show: true,
        type: ['line', 'bar']
      },
      restore: {
        show: true
      },
      saveAsImage: {
        show: true
      }
    }
  },
  calculable: true,
  xAxis: [{
    type: 'category',
    data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
  }],
  yAxis: [{
    type: 'value'
  }],
  series: [{
    name: '2014',
    type: 'bar',
    data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
  }, {
    name: '2015',
    type: 'bar',
    data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3],
  }]
};

myBarChart.setOption(barChartOption);
/*#########################         BARCHART            ##################################*/

$(function() {
      $( "#tabs" ).tabs({
        select: function(event, ui) {
          console.log('Calling chart.invalidateSize()');
          chart.invalidateSize();
        }
      });

这个问题有什么解决办法吗?

});
twitter-bootstrap-3 echarts
3个回答
4
投票

ECharts文档已经提到了

有时图表可能会放置在多个选项卡中。由于不了解容器的宽度和高度,隐藏标签中的标签可能无法初始化。因此切换到相应选项卡时应手动调用 resize 以获得正确的宽度和高度,或者在 opts 中显式指定宽度/高度。

因此每次切换到新选项卡时,只需调用图表实例上的调整大小函数即可:

chartInstance.resize()

2
投票

答案有点晚了,我不确定你是否找到了解决方案,但是解决这个问题的方法是结合 echarts

setOption
和 Bootstrap 的 Tab 事件。

喜欢-

$('#myTabItem').on('shown.bs.tab', function (e) {
         myChart.setOption(options);
})

一旦显示 Bootstrap 选项卡,上述代码将使用 echarts

mychart
回调重新加载图表
setOption
。有关 Bootstrap Tab 事件的更多信息可以在此处找到。


0
投票

我在bootstrap 4中使用导航时发现错误。Echarts不显示数据。我找到了解决办法。您可以在 javascript 中的 setOption() 之后使用 resize() 。

喜欢:

myChart.setOption(options);
myChart.resize();
© www.soinside.com 2019 - 2024. All rights reserved.