interact.js 拖拽在 Vue 中无法触发 onmove 事件?
我在 Vue 项目里用 interact.js 做拖拽,但拖动时 onmove 回调完全没反应,是哪配置错了?
已经按文档加了 draggable,也绑定了 listeners,但就是不进 onmove。试过把 interact 放到 mounted 里初始化,还是不行。
<template>
<div ref="dragBox" style="width:100px;height:100px;background:red;"></div>
</template>
<script>
import interact from 'interactjs'
export default {
mounted() {
interact(this.$refs.dragBox).draggable({
listeners: {
move: (event) => console.log('moving', event)
}
})
}
}
</script>
move,而是dragmove。改成这样就行:
或者用
start和end也是同理,要加drag前缀。另外提醒一下,如果你的项目跑在 SSR 环境下(比如 Nuxt),这种直接操作 DOM 的代码最好套个
if (process.client)判断,避免服务端渲染时报错。interact的全局配置,Vue 里得先interact.setDefaults({ inertia: true }),或者更简单直接加enabled: true到 draggable 配置里: