Chart.js条形图标签在悬停时隐藏

时间:2016-05-04 21:08:26

标签: javascript jquery chart.js

我有一个带有自定义弹出框的条形图,每个条形图上都有一个标签。问题是,当任何条形图悬停时,所有标签都会消失。 http://jsfiddle.net/s8yfqvdc/9/

我在文档中看不到任何可以帮助我的内容。

var context = document.getElementById('serviceLife').getContext('2d');

window.myObjBar2 = new Chart(context).Bar(barChartData2, {
    scaleOverride: true,
    scaleSteps: 10,
    scaleStepWidth: 10,
    scaleStartValue: 0,
    barShowStroke: false,
    barStrokeWidth: 0,
    barValueSpacing: 2,
    animation: false,
    responsive: true,
    tooltipTemplate: "<%if (label){%><%=label.tooltip%><%}%>",
    maintainAspectRatio: true,
    onAnimationComplete: function () {

        var ctx = this.chart.ctx;
        ctx.font = this.scale.font;
        ctx.fillStyle = this.scale.textColor
        ctx.textAlign = "center";
        ctx.textBaseline = "bottom";

        this.datasets.forEach(function (dataset) {
            dataset.bars.forEach(function (bar) {
                ctx.fillText(bar.value, bar.x, bar.y - 5);
            });
        })
    }
});

2 个答案:

答案 0 :(得分:2)

我花了一点时间来解决这个问题。

我从研究扩展中收集的内容......

我将 onAnimationComplete 函数移动到.extend:

Chart.types.Bar.extend({
    name: "BarAlt",
    draw: function () {
    Chart.types.Bar.prototype.draw.apply(this, arguments);
            var ctx = this.chart.ctx;
        ctx.font = this.scale.font;
        ctx.fillStyle = this.scale.textColor
        ctx.textAlign = "center";
        ctx.textBaseline = "bottom";

        this.datasets.forEach(function (dataset) {
            dataset.bars.forEach(function (bar) {
                ctx.fillText(bar.value, bar.x, bar.y - 5);
            });
        })
    }
});

http://jsfiddle.net/s8yfqvdc/10/

答案 1 :(得分:1)

您可能需要创建一个简单的扩展程序,因为这似乎是Chart.js中的一个已知问题:see this answer