Javascript 画布未填充填充文本

Javascript 画布未填充填充文本,javascript,angularjs,canvas,charts,Javascript,Angularjs,Canvas,Charts,我使用的是画布图表,我想要实现的是将卷号(一些文本)放在油炸圈饼图表的中心。我也在用AngularJS 这是我的代码: $scope.fill = function(chart) { var chart = $('#doughnut'); console.log(chart); var width = chart[0].width, height = chart[0].height, ctx = c

我使用的是画布图表,我想要实现的是将卷号(一些文本)放在油炸圈饼图表的中心。我也在用AngularJS

这是我的代码:

$scope.fill = function(chart) {
        var chart = $('#doughnut');

        console.log(chart);
        var width = chart[0].width,
            height = chart[0].height,
            ctx = chart[0].getContext("2d");

        console.log(height);

        ctx.restore();
        var fontSize = (height / 300).toFixed(2);
        ctx.font = fontSize + "em sans-serif";
        ctx.textBaseline = "middle";

        var text = $scope.volume + ' PLN';
        console.log(text);
        // text = text.split('').splice(3, 0, ' ').join() + ' PLN'; // to do sth like this

        var textX = Math.round((width - ctx.measureText(text).width) / 2),
            textY = height / 2;
        console.log(textY);
        console.log(textX);
        ctx.fillText(text, textX, textY);
        console.log(ctx.fillText(text, textX, textY));
        ctx.save();
    }();

所有console.log都为我提供了正确的值。但是,“fillText”和“save”对页面没有任何影响。可能有什么问题?

fontSize在控制台中有什么值?尝试使用以像素为单位的固定值来消除。您可以使用textAlign=“center”来代替使用measureText进行计算。然后calc textX=width/2。@K3N fontSize的值为2.00,所以我想这是对的。问题是,当我使用像这里这样的解决方案时,它起作用了:但是它应用于所有图表(我不理解,因为我只把它放在负责一个视图的控制器中)。所以现在我试着写一个函数,我只会在创建一个特定的图表时启动它。我发现填充文本的颜色是白色的,所以它不会被注意到,因为背景也是如此。但当我把它换成蓝色时,它无论如何都没有发生。当我将函数设置为画布的ng click时,它在我每次单击时都会工作,但当我稍后执行任何操作时(将鼠标悬停在画布外或只是单击任何图表元素的某个位置),它就会消失。然后我可以点击并再次显示它。好的,我用另一种方式。我使用了上面链接中的解决方案,但添加了一个条件:“if(chart.config.options.elements.center)”,并将此选项添加到图表配置中。现在它只适用于我指定的图表。