Мне нужно привязать события мыши холста ткани js.
Я показал пример события mousedown для холста, используя vue в Fabric js.
Пробовал с .native и без .native. Ни один из них не работает.
Мой код, как показано ниже.
<template>
<div class = "container">
<div ref = "rootDiv">
<canvas
:id = "'c'"
@mousedown.native = "mousedown"
></canvas>
</div>
</div>
</template>
<script lang = "ts">
import Vue from "vue";
import { Component } from "vue-property-decorator";
import { fabric } from "fabric";
@Component
export default class CanvasComponent extends Vue {
public mounted() {
const canvas = new fabric.Canvas('c');
}
public mousedown(e: any) {
debugger;
console.info('mouse down clicked.')
}
}
</script>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Создается впечатление, что ткань меняет структуру холста. он окружает div, а также добавляется еще один холст.
Таким образом, они могут сначала удалить этот холст, а затем добавить снова, что может не быть глубоким копированием. и из-за этого события удаляются. если мы связываемся через их API, то он работает отлично. Итак, следующая привязка событий работает.
canvas.on('mouse:down', (e) => this.mouseDown(e));
Структура, которую они заменяют данным холстом, следующая.
<div class = "canvas-container" style = "width: 299px; height: 429.058px; position: relative; user-select: none;">
<canvas id = "1" class = "lower-canvas" width = "299" height = "429" style = "position: absolute; width: 299px; height: 429.058px; left: 0px; top: 0px; touch-action: none; user-select: none;"></canvas>
<canvas class = "upper-canvas " width = "299" height = "429" style = "position: absolute; width: 299px; height: 429.058px; left: 0px; top: 0px; touch-action: none; user-select: none; cursor: default;"></canvas>
</div>
Проверьте раздел событий руководство.