我遇到了在第二个标签上显示我的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();
}
});
解决方案是什么?请帮忙..
});
答案 0 :(得分:0)
答案有点晚了,我不确定你是否找到了解决方案,但对此的解决方案将是echarts setOption
和Bootstrap的Tab事件的组合。
象 -
$('#myTabItem').on('shown.bs.tab', function (e) {
myChart.setOption(options);
})
一旦显示Bootstrap选项卡,上面的代码将使用echarts mychart
回调重新加载图表setOption
。有关Bootstrap Tab事件的更多信息可以在here找到。
答案 1 :(得分:0)
ECharts文档已提及
有时图表可能会放置在多个选项卡中。由于容器宽度和高度的不了解,隐藏标签中的标签可能无法初始化。因此,在切换到相应的选项卡时,应该手动调用resize以获取正确的宽度和高度,或者在opts中明确指定宽度/高度。
因此,每次切换到新选项卡时,只需在图表实例上调用resize函数:
chartInstance.resize()