【发布时间】:2018-04-23 16:45:46
【问题描述】:
我有一个画布,我希望用户能够在它周围拖动图形元素。因此,我不希望画布本身拖动,但我想在鼠标执行这些操作时处理 dragstart、drag 和 drop 事件。
我使用的是 Angular 2,所以我有:
<!-- editor.component.html -->
<div #rendererContainer
draggable="true"
(dragstart)="onDragStart($event)"
(drag)="onDrag($event)"
(dragover)="onDrag($event)"
(drop)="onDragEnd($event)"
(dragend)="onDragEnd($event)">
</div>
然后在 editor.component.ts 中:
onDragStart(event) {
console.log(`starting`);
event.preventDefault();
}
onDrag(event) {
console.log('dragging');
event.preventDefault();
}
onDragEnd(event) {
console.log('drag end');
event.preventDefault();
}
当我尝试拖动某些东西时,我会在控制台中打印出starting,但仅此而已。如何让其他拖动事件触发?我是否必须从 mousedown/move/up 事件中滚动自己的拖动?
stackblitz 上的独立示例。我想“拖动” div 来触发 dragstart/drag/drop 事件,但它只会触发起始事件。
【问题讨论】:
-
如果从所有函数中删除
event.preventDefault();会发生什么? -
它在拖动开始时移动 div,这是我不想要的。
-
画布在哪里?您可以将其包含在标记中吗?如果你能在 stackblitz 中重现这个问题,那就更好了。
-
顺便说一句,
(drop)行的末尾有一个错字(可能只在问题中,而不是在您的实际标记中)。
标签: javascript angular