如何使用自动滚动功能 vue-draggable
how to use autoscroll feature vue-draggable
我正在尝试将 vue-draggable (https://github.com/SortableJS/Vue.Draggable) 用于大量嵌套项目(组织树)。
由于有大量数据,用户将需要能够在拖动时滚动。
据说支持 sortable.js 中的所有选项,但我不知道应该如何实现 'autoscroll'。
https://github.com/SortableJS/Sortable/tree/master/plugins/AutoScroll
我试过了:
import draggable from "vuedraggable";
import { Sortable, AutoScroll } from 'sortablejs';
Sortable.mount(new AutoScroll());
并在模板中:
<draggable class="dragArea"
tag="ul"
:list="nodes"
:group="{ name: 'g1' }"
:scroll-sensitivity="250"
>
<li class="drag rij" v-for="el in nodes" :key="el.id"
{{ el.code }}
</li>
</draggable>
我得到的错误是:
_sortablejs.AutoScroll is not a constructor
原来自动滚动是默认开启的。它只是响应比我预期的更繁琐。换句话说:您必须非常精确地拖动到屏幕边缘(顶部或底部)才能滚动,但它确实开箱即用。
所以很简单:
import draggable from "vuedraggable";
我意识到这已经很老了,但我遇到了同样的问题。正如所指出的,默认情况下自动滚动确实是打开的。但它似乎不是开箱即用的。对我来说,它有两个部分:
- 我的页眉和页脚是悬停在页面上方的固定元素,因此只有在接近页面边框时才会自动滚动,而不是元素的边框
这可以通过增加自动滚动灵敏度来解决,您已经这样做了:
<draggable [...]
:scroll-sensitivity="200"
>
- 似乎 HTML 5 的默认拖放行为会干扰自动滚动功能。
这就像将 forceFallback
属性 绑定到可拖动对象一样简单:
<draggable [...]
:force-fallback="true"
>
这当然也可以通过绑定 dragOptions 来完成,这会大大清理您的模板代码:
<draggable class="dragArea"
tag="ul"
v-bind="dragOptions"
>
并添加计算或数据 属性 dragOptions
:
computed: {
dragOptions() {
return {
group: {
name: 'g1'
},
scrollSensitivity: 200,
forceFallback: true
};
}
}
滚动没有我希望的那么漂亮,但这可能就是我打开的标签数量。
我正在尝试将 vue-draggable (https://github.com/SortableJS/Vue.Draggable) 用于大量嵌套项目(组织树)。
由于有大量数据,用户将需要能够在拖动时滚动。
据说支持 sortable.js 中的所有选项,但我不知道应该如何实现 'autoscroll'。 https://github.com/SortableJS/Sortable/tree/master/plugins/AutoScroll
我试过了:
import draggable from "vuedraggable";
import { Sortable, AutoScroll } from 'sortablejs';
Sortable.mount(new AutoScroll());
并在模板中:
<draggable class="dragArea"
tag="ul"
:list="nodes"
:group="{ name: 'g1' }"
:scroll-sensitivity="250"
>
<li class="drag rij" v-for="el in nodes" :key="el.id"
{{ el.code }}
</li>
</draggable>
我得到的错误是:
_sortablejs.AutoScroll is not a constructor
原来自动滚动是默认开启的。它只是响应比我预期的更繁琐。换句话说:您必须非常精确地拖动到屏幕边缘(顶部或底部)才能滚动,但它确实开箱即用。
所以很简单:
import draggable from "vuedraggable";
我意识到这已经很老了,但我遇到了同样的问题。正如所指出的,默认情况下自动滚动确实是打开的。但它似乎不是开箱即用的。对我来说,它有两个部分:
- 我的页眉和页脚是悬停在页面上方的固定元素,因此只有在接近页面边框时才会自动滚动,而不是元素的边框
这可以通过增加自动滚动灵敏度来解决,您已经这样做了:
<draggable [...]
:scroll-sensitivity="200"
>
- 似乎 HTML 5 的默认拖放行为会干扰自动滚动功能。
这就像将 forceFallback
属性 绑定到可拖动对象一样简单:
<draggable [...]
:force-fallback="true"
>
这当然也可以通过绑定 dragOptions 来完成,这会大大清理您的模板代码:
<draggable class="dragArea"
tag="ul"
v-bind="dragOptions"
>
并添加计算或数据 属性 dragOptions
:
computed: {
dragOptions() {
return {
group: {
name: 'g1'
},
scrollSensitivity: 200,
forceFallback: true
};
}
}
滚动没有我希望的那么漂亮,但这可能就是我打开的标签数量。