Bootstrap轮播与morris.js图表​​有冲突吗?

时间:2013-07-25 08:00:13

标签: twitter-bootstrap raphael google-visualization carousel morris.js

我正在使用morris.js绘制图表,我想通过bootstrap carousel显示这些图表,但是如果我这样做,Firefox会停止响应。它们可以单独工作,但如果放在一起会崩溃。萤火虫告诉我拉斐尔图书馆有什么关系,但我还是想不通。那里的任何人遇到了类似的问题并知道如何解决这个问题?感谢。

这是我的代码的一部分。

<div id="myCarousel" class="carousel slide">
<ol class="carousel-indicators">
    <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
    <li data-target="#myCarousel" data-slide-to="1"></li>
    <li data-target="#myCarousel" data-slide-to="2"></li>
</ol>
<!-- Carousel items -->
<div class="carousel-inner">
    <div class="active item">
        <div id="A-lineChart" style="height:250px;"></div>
    </div>
    <div class="item">
        <div id="B-lineChart" style="height:250px;"></div>
    </div>
    <div class="item">
        <div id="C-lineChart" style="height:250px;"></div>
    </div>
</div>
<!-- Carousel nav -->
<a class="carousel-control left" href="#myCarousel" data-slide="prev">&lsaquo;</a>
<a class="carousel-control right" href="#myCarousel" data-slide="next">&rsaquo;</a>
</div>

<script>
$('.carousel').carousel({
    interval: 1000
});

$.post('/my/handler.json',{ 
    parameter:value},
    function(data){
    if(data.hasOwnProperty('error')){
        alert('error');
    }
    else{
        var r = data['results']
        var AData = new Array();
        var BData = new Array();
        var CData = new Array();
        for(var i = 0; i < r.length; i++){
            d = r[i];
            col = {'date':date, 'A': A};
            AData.push(col);
            col = {'date':date, 'B': B};
            BData.push(col);
            col = {'date':date, 'C': C};
            CData.push(col);
        }
        new Morris.Line({
            element: 'A-lineChart',
            data: AData,
            xkey: 'date',
            ykeys: ['A'],
            labels: ['A']
        });
        new Morris.Line({
            element: 'B-lineChart',
            data:BData,
            xkey:'date',
            ykeys:['B'],
            labels:['B']
        });
        new Morris.Line({
            element: 'C-lineChart',
            data:CData,
            xkey:'date',
            ykeys:['C'],
            labels:['C']
        });

    }
});

</script>

2 个答案:

答案 0 :(得分:1)

这与使用标签时的问题相同。我假设第一个图表显示出来(如果没有,你可能有多个问题),但是一旦在旋转木马中被调用它们之后没有任何图形呈现。图表是在document.ready上绘制的,但由于它们位于旋转木马中,因此它们不会被绘制,因为它们是显示的:在被调用之前没有。

这已在another thread中解决。

您必须将使用.redraw()的函数组合在一起。请参阅此处的工作小提琴:http://jsfiddle.net/b3rgstrom/vbfzr/

您应该能够根据您在我提供的资源中找到的内容拼凑出一些东西。我希望这有帮助!

答案 1 :(得分:0)

这不是完美的解决方案,但这会奏效。将活动班级插入         <div class="item active" id="graphElemnt>

然后删除该课程&#34;激活&#34;

<script type="text/javascript"> $(document).ready(function () { setTimeout(function () { $('#graphElemnt').removeClass("active"); //your code to be executed after 1 seconds }, 5000); }) </script>

仅为一个项目保留活动类,从其余项目中删除该类。