javascript - 如何在 vue 可拖动列表旁边设置固定元素
问题描述
我正在尝试使用vue-draggable显示可拖动元素的列表,这些元素有时在给定位置由固定元素分隔。
到目前为止,我尝试了以下方法:在v-for
循环内需要时创建不同的元素。
<draggable :list="list" class="dragArea" :class="{dragArea: true}"
:options="{group:'people', draggable: '.drag'}" @change="handleChange">
<template v-for="(element, index) in list">
<div class="drag">
{{element.name}}
</div>
<div class="nodrag" v-if="index === 2">Fixed element</div>
</template>
</draggable>
但是,它破坏了我的应用程序的行为,因为onChange
事件返回的索引不再是预期的。(您可以在此 jsfiddle上查看复制品)
我做错了吗?我还考虑过使用move
道具来禁用此处建议的拖动功能,但问题仍然存在,因为我相信我正在使用可拖动列表之外的元素。
在我们的生产用例中,固定元素的索引是可变的,如果这很重要的话。
解决方案
您可以move
在draggable
组件中使用,然后指定哪些元素将是fixed
. 像这样的东西:
<draggable
:list="list"
:disabled="!enabled"
class="your_class"
:move="checkMove"
@start="dragging = true"
@end="dragging = false"
>
...
</draggable>
...........
data() {
return{
list: [{foo: "bar", ..., fixed: true}, {foo: "bar", ...}, {foo: "bar", ...}, {foo: "bar", ..., fixed: true}]
}
}
...........
methods: {
checkMove(e) {
return !this.list[e.draggedContext.futureIndex].fixed
}
}
推荐阅读
- ios - QLThumbnailGenerator saveBestRepresentation 错误的内容类型 Swift iOS 13+
- swift - 创建一个 Realm List<> 来填充 UITableView
- typescript - Typescript 复杂查询格式
- c# - CORS anyorigin 是否允许安全?
- python - 如何提取每个视频的所有观看次数导致 Selenium 搜索 Youtube?
- javascript - 如何根据另一个参数更改函数参数的数量?
- oauth - 如何使用适用于 Web 服务器应用程序的 Google OAuth 2.0 向 Google ID_Token 添加自定义声明
- nuget-package - 排除 NuSpec 文件中除缩小版本外的文件
- android - 颤动中的眨眼检测?
- javascript - 从子div获取父div