Получение значений x, y из события щелчка диаграммы

0

Я использую ng2-диаграммы, чтобы создать линейную диаграмму с несколькими кликабельными точками. Когда я нажимаю точку, запускается событие щелчка - здесь метод:

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-диаграммам не объясняет, как фактически использовать переменную "e" (из того, что я видел). Я хотел бы получить значения x и y из точки щелчка - кто-нибудь знает, как это сделать?

  • 1
    Вы пробовали просто смотреть на значения внутри 'e' во время выполнения?
  • 0
    Это даже действительный JS? Похоже, еще один язык на основе классов.
Показать ещё 4 комментария
Теги:
angular
chart.js

1 ответ

0
Лучший ответ

Глядя на демограммы Angular2 Chart, я заметил следующее:

e является контейнером для: а) щелчка элементов диаграммы и b) клика мыши.

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

Поэтому, поскольку он выглядит обычным старым MouseEvent, вы можете сделать следующее, чтобы получить позицию на диаграмме:

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

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

  • 0
    Спасибо за ответ. Использование этого кода не возвращает ожидаемых значений диаграммы - на самом деле цифры далеко не верны. Я сделал Ctrl-F в инструментах разработчика Chrome и ни в одном из значений x или в возвращенном объекте 'e'. Также я могу ошибаться, но может ли e.event.layerX / Y вернуть координаты мыши, а не значения диаграммы?
  • 1
    О, я думал, что это то, о чем спрашивал твой вопрос, позиция щелчка на графике. Хорошо, тогда посмотрите на массив точек данных в том же событии. Это должно иметь его значение на графике.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню