【问题标题】:chart.js pie chart issue with display: nonechart.js 饼图显示问题:无
【发布时间】:2015-05-04 23:24:05
【问题描述】:

当容器在小型设备中具有显示属性 none 时,饼图出现问题,并且出现以下错误:

未捕获的 IndexSizeError: 无法在“CanvasRenderingContext2D”上执行“arc”:提供的半径 (-0.5) 为负数。

我的 HTML 代码是

<div class="container-fluid charts hidden-xs">
    <div class="row">
        <div class="col-md-6 col-xs-12">
            <div class="panel panel-default">
                <div class="panel-heading">Annual sales</div>
                <div class="panel-body">
                    <canvas class="annualChart" width="400" height="400"></canvas>
                </div>
            </div>
        </div>
        <div class="col-md-6 col-xs-12">
            <div class="panel panel-default">
                <div class="panel-heading">Visitors per shop</div>
                <div class="panel-body">
                    <canvas class="visitorsChart" width="400" height="400"></canvas>
                    <div id="legend"></div>
                </div>
            </div>
        </div>
        <div class="col-md-6 col-xs-12">
            <div class="panel panel-default">
                <div class="panel-heading">Fans</div>
                <div class="panel-body">
                    <canvas class="annualfanschart" width="400" height="400" ></canvas>
                </div>
            </div>
        </div>

        <div class="col-md-6 col-xs-12">
            <div class="panel panel-default">
                <div class="panel-heading">General sales</div>
                <div class="panel-body">
                    <canvas class="generalSalesChart" width="400" height="400"></canvas>
                </div>
            </div>
        </div>
    </div>
</div>

而我的饼图 div 的 JS 代码是(其他是折线图和条形图)

var data = [
{
    value: 300,
    color:"#F7464A",
    highlight: "#FF5A5E",
    label: "Men"
},
{
    value: 50,
    color: "#46BFBD",
    highlight: "#5AD3D1",
    label: "Women"
},
    {
    value: 100,
    color: "#FDB45C",
    highlight: "#FFC870",
    label: "Children",
    }
];
var options = {

animationSteps : 100,

animationEasing : "easeOutBounce",

animateRotate : true,

animateScale : true

}
var ctx = $(".visitorsChart").get(0).getContext("2d");
var myPieChart = new Chart(ctx).Pie(data,{
legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for     (var i=0; i<segments.length; i++){%><li><span style=\"background-color:    <%=segments[i].fillColor%>\"></span><%if(segments[i].label){%>    <%=segments[i].label%><%}%></li><%}%></ul>"
});

var legend = myPieChart.generateLegend();
$("#legend").html(legend);

我只遇到饼类型的问题,其他类型不显示错误

【问题讨论】:

    标签: javascript chart.js


    【解决方案1】:

    chart.js 中目前存在一个错误:https://github.com/nnnick/Chart.js/issues/592

    如果元素不可见,请尝试跳过图表呈现

    if ($(".visitorsChart").is(":visible")) {
      var ctx = $(".visitorsChart").get(0).getContext("2d");
      var myPieChart = new Chart(ctx).Pie(data,{});
    }
    

    【讨论】:

    • 这个拉取请求github.com/nnnick/Chart.js/pull/1467刚刚被合并到2.0分支来解决这个问题。
    • 哇,我花了几个小时试图解决这个问题,我一直都正确,只是画布上的那个愚蠢的 .is(":visible") ......为此干杯......
    猜你喜欢
    • 2015-07-14
    • 2017-09-26
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多