Highcharts-vue - Using the tooltip / label formatter()

xesrikrc  于 2022-11-10  发布在  Highcharts
关注(0)|答案(1)|浏览(159)

我 以前 使用 标签 格式化 程序 来 定制 图表 中 的 Y 轴 标签 , 但是 由于 范围 的 原因 , 我 不 确定 如何 使用 highcharts-vue 来 完成 这 一 任务 。

export default {
  data () {
    return {

      currencySymbol: '$',

      title: 'My Chart',
      points: [10, 0, 8, 2, 6, 4, 5, 5],
      chartType: 'Spline',
      chartOptions: {
        chart: {
          type: 'spline'
        },
        title: {
          text: 'Sin chart'
        },
        yAxis: {
          gridLineDashStyle: 'Dot',
          labels: {
              style: {
                  color: '#fff'
              },

              formatter: function () {
                  return this.currencySymbol + this.axis.defaultLabelFormatter.call(this)
              }

        },
        series: [{
          data: [10, 0, 8, 2, 6, 4, 5, 5],
          color: '#6fcd98'
        }]
      }
    }
  }

中 的 每 一 个
在 完整 的 应用 程序 中 , currencySymbol 属性 会 在 AJAX 调用 的 响应 中 更新 。
有 没有 一 个 优雅 的 方式 来 实现 这 一 点 ?

mum43rcc

mum43rcc1#

最推荐的方法是使用Computed Properties、JS Arrow function,并调用Highcharts.Axis.prototype.defaultLabelFormatter
首先,我们需要将整个图表配置移到一个计算属性中,例如名为chartOptions。然后,我们只需要稍微重构格式化器函数,使其成为箭头函数,并创建带有组件数据中定义的符号的变量(!important)。之后,this关键字将在组件对象上指示:并通过调用在函数顶部创建的变量来直接引用符号。我准备了这个例子,所以请注意它。
示例:https://codesandbox.io/s/highcharts-vue-demo-icuzw
编码:

data() {
    return {
      currencySymbol: "$",
      title: "My Chart",
      points: [10, 0, 8, 2, 6, 4, 5, 5],
      chartType: "Spline"
    };
  },
  computed: {
    chartOptions() {
      var symbol = this.currencySymbol;

      return {
        chart: {
          type: "spline"
        },
        title: {
          text: "Sin chart"
        },
        yAxis: {
          gridLineDashStyle: "Dot",
          labels: {
            style: {
              color: "#000"
            },
            formatter: label => {
              return (
                symbol + Highcharts.Axis.prototype.defaultLabelFormatter.call(label)
              );
            }
          }
        },
        series: [
          {
            data: [10, 0, 8, 2, 6, 4, 5, 5],
            color: "#6fcd98"
          }
        ]
      };
    }
  }

此致!

相关问题