在隐藏元素中绘制Google Chart

时间:2014-05-12 19:05:41

标签: jquery twitter-bootstrap google-visualization hidden

尝试在没有幸运的情况下在隐藏元素中渲染Google图表。小提琴波纹管有一个带引导标签的例子:

Fiddle

安德鲁在这里得到了一些帮助:How to draw a google chart when a tab is showed?但是图表现在可以在我与它互动时重新渲染(例如使用范围过滤器)。

HTML代码为:

<div class="container">
    <div class="tabbable">
        <ul class="nav nav-tabs" data-tabs="tabs">
            <li class="active">
                <a href="#A" data-toggle="tab">Tab A</a>
            </li>
            <li class="">
               <a href="#B" data-toggle="tab">Tab B</a>
            </li>
            <li class="">
                <a href="#C" data-toggle="tab">Tab C</a>
            </li>
        </ul>
        <div class="tab-content">
            <div class="tab-pane active" id="A">
                <div id='ChartA'></div>
            </div>
            <div class="tab-pane" id="B">
                <div id='ChartB'></div>
            </div>
            <div class="tab-pane" id="C">
                <div id='ChartC'></div>
            </div>
        </div>
    </div>
</div>

所有JS代码都在小提琴中。

2 个答案:

答案 0 :(得分:5)

一个简单的例子,我在这里所做的就是当标签显示为每个标签触发事件时重新加载图形。我确信这是一个更优雅的解决方案,但它可以完成这项工作。

$("a[href='#A']").on('shown.bs.tab', function (e) {
    google.load('visualization', '1', {
        packages: ['timeline'],
        callback: drawChartA
    });
});

$("a[href='#B']").on('shown.bs.tab', function (e) {
    google.load('visualization', '1', {
        packages: ['timeline'],
        callback: drawChartB
    });
});

$("a[href='#C']").on('shown.bs.tab', function (e) {
    google.load('visualization', '1', {
        packages: ['timeline'],
        callback: drawChartC
    });
});

答案 1 :(得分:0)

简单:

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
  window.dispatchEvent(new Event('resize'));
});