【问题标题】:Getting x,y values from chart click event从图表点击事件中获取 x,y 值
【发布时间】:2016-06-02 22:39:03
【问题描述】:

我正在使用 ng2-charts 创建一个带有多个可点击点的折线图。当我点击一个点时,会触发一个点击事件——方法如下:

public chartClicked(e: any): void {
    console.log('Clicked: ' + e);
}

这是我的图表 HTML:

<div class="col-md-6">
    <base-chart id="lineChart" class="chart"
                [datasets]="chartData"
                [labels]="chartLabels"
                [colors]="chartColours"
                [legend]="chartLegend"
                [chartType]="chartType"
                (chartHover)="chartHovered($event)"
                (chartClick)="chartClicked($event)"></base-chart>
</div>

不幸的是,ng2-charts 文档没有解释如何实际使用“e”变量(据我所知)。我想从点击点检索 x 和 y 值 - 有人知道该怎么做吗?

【问题讨论】:

  • 您是否尝试过在运行时仅查看 'e' 中的值?
  • 那是有效的 JS 吗?看起来像是另一种基于类的语言。
  • Chrome 开发工具将“e”显示为 [object Object]。当我尝试输入点运算符 - 'e' 时,什么都没有弹出。
  • chartClicked 方法是从 ng2-charts 复制而来的。该函数位于导出类中的 .ts TypeScript 文件中(导出类 Home{...})
  • @Roka545 ,这真的很奇怪,所以它是一个空对象? Chrome 开发工具应该可以让你扩展它并查看它的属性?

标签: javascript html angularjs angular chart.js


【解决方案1】:

查看 Angular2 图表演示,我发现了以下内容:

e 是一个容器,用于 a)被点击的图表元素和 b)点击的鼠标事件

e = {
  active: chartData[],
  event: MouseEvent
}

因此,由于它似乎是一个常规的旧 MouseEvent,您应该能够执行以下操作来获取图表上的位置:

var x:number = e.event.layerX;
var y:number = e.event.layerY;

我建议仔细检查一下,如果我错了,请告诉我。

【讨论】:

  • 感谢您的回复。使用该代码不会返回预期的图表值 - 实际上数字相差甚远。我在 Chrome 开发工具中执行了 Ctrl-F,但没有 x 值或返回的“e”对象。另外,我可能是错的,但可能是 e.event.layerX/Y 返回鼠标坐标,而不是图表值?
  • 哦,我以为这就是你的问题,点击图表的位置。然后查看同一事件中的数据点数组。这应该在图表中具有它的价值。
  • 想通了 - 比我想象的要容易。在单击/悬停时返回的对象内(上面代码 sn-p 中的“e”),它们是一个“index”条目 - 该索引对应于悬停点的索引。这是我在 Chrome 开发者工具中找到的对象结构: *Object {event: MouseEvent, active:Array[1]} *active: Array[1] *0: i * _chart : t ..... __index: 6
猜你喜欢
  • 2018-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多