无法在不同的标签中呈现多个响应式画布图

时间:2014-12-08 10:02:40

标签: javascript chart.js

我的页面的不同标签(bootstrap nav-pill标签)中有不同的图表。当我将图形设置为响应时,非活动选项卡的宽度和高度属性计算为零,因此不会呈现非活动图形。我试图在点击事件中定义和渲染图形,但这没有用。

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 });

可以采取哪些措施来解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:1)

每次在标签之间切换时,您似乎需要重新绘制图表。 如果您只调整窗口大小,则会看到正在呈现的图表...

调用一些触发器来销毁myLineChart2,然后再次启动它。