Chart.js onAnimationComplete не работает

#javascript #jquery #html #chart.js

#javascript #jquery #HTML #chart.js

Вопрос:

Я хочу написать текстовый центр диаграммы пончиков. Я написал этот код ниже

 <script>

    $(document).ready(function () {
        var data = {
            labels: [
                ""

            ],
            datasets: [
                {
                    data: [165],
                    backgroundColor: [
                        "#FF6384"

                    ],
                    hoverBackgroundColor: [
                        "#FF6384"

                    ]
                }]
        };
        var ctx = $('#chart-area').get(0).getContext("2d");
        var myDoughnutChart = new Chart(ctx, {
            type: 'doughnut',
            data: data,
            animation: true,
            responsive: true,
            showTooltips: false,
            percentageInnerCutout: 70,
            segmentShowStroke: false,
            onAnimationComplete: function () {

                var canvasWidthvar = $('#chart-area').width();
                var canvasHeight = $('#chart-area').height();
                var constant = 114;
                var fontsize = (canvasHeight / constant).toFixed(2);
                //ctx.font="2.8em Verdana";
                ctx.font = fontsize   "em Verdana";
                ctx.textBaseline = "middle";
                var total = 0;
                $.each(data, function () {
                    total  = parseInt(this.value, 10);
                });
                var tpercentage = ((data[0].value / total) * 100).toFixed(2)   "%";
                console.log(total);
                var textWidth = ctx.measureText(tpercentage).width;

                var txtPosx = Math.round((canvasWidthvar - textWidth) / 2);
                ctx.fillText(tpercentage, txtPosx, canvasHeight / 2);
            }
        });
    });
  

Я хотел сделать это после завершения анимации и использовал функцию onAnimationComplete, но функция onAnimationComplete здесь не работает.

Комментарии:

1. вы когда-нибудь решали эту проблему, поскольку у меня такая же проблема

Ответ №1:

Столкнулся с той же проблемой. Вместо этого используйте onComplete() в options.animation:

 options:{
    animation:{
        onComplete : function(){
            /*Your code here*/
        }
    }
}
  

Комментарии:

1. Вам действительно следует добавить некоторое объяснение того, почему этот код должен работать — вы также можете добавлять комментарии в сам код — в его текущем виде он не содержит никаких объяснений, которые могли бы помочь остальной части сообщества понять, что вы сделали для решения / ответа на вопрос.