无法在不同的选项卡中呈现多个响应式画布图

Can't render multiple responsive canvas graphs in different tabs

本文关键字:响应 布图 选项      更新时间:2023-09-26

我在页面的不同选项卡(引导导航药丸选项卡)中有不同的图表。当我将图形设置为响应式时,非活动选项卡的宽度和高度属性计算为零,因此不会呈现非活动图形。我尝试在单击事件上定义和呈现图形,但这不起作用。

jsFiddle: http://jsfiddle.net/n2fole00/17nhjjp9/

<ul class="nav nav-pills">
    <li class="active"><a data-toggle="tab" href="#one" class="blue-tabs">One</a></li>
    <li><a data-toggle="tab" href="#two" class="blue-tabs">Two</a></li>
<div class="tab-content">
    <div id="one" class="tab-pane fade in active">
        <canvas id="myChart" width="200" height="100"></canvas>
    </div>
    <div id="two" class="tab-pane fade">
        <canvas id="myChart2" width="200" height="100"></canvas>
    </div>
</div>

var data = {
    labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun"],
    datasets: [
        {
            label: "My First dataset",
            fillColor: "red",
            strokeColor: "red",
            pointColor: "red",
            pointStrokeColor: "#fff",
            pointHighlightFill: "#fff",
            pointHighlightStroke: "red",
            data: [40, 35, 38, 40, 35, 40,]
        }
    ]
};
var data2 = {
    labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun"],
    datasets: [
        {
            label: "My First dataset",
            fillColor: "red",
            strokeColor: "red",
            pointColor: "red",
            pointStrokeColor: "#fff",
            pointHighlightFill: "#fff",
            pointHighlightStroke: "red",
            data: [25, 25, 25, 25, 35, 25,]
        }
    ]
};
var ctx = document.getElementById("myChart").getContext("2d");
var ctx2 = document.getElementById("myChart2").getContext("2d");
var myLineChart = new Chart(ctx).Line(data, { responsive: true });
var myLineChart2 = new Chart(ctx2).Line(data2, { responsive: true });

可以做些什么来解决这个问题?

谢谢。

似乎每次在选项卡之间切换时都需要重新绘制图表。如果您只是调整窗口大小,您将看到正在渲染的图表...

调用一些触发器来破坏myLineChart2,然后再次初始化它。