element-ui el-transfer添加拖拽排序功能

2023-05-16

// html 部分
<el-card class="box-card">
    <el-transfer 
        :render-content="renderFunc"
        v-model="value" 
        :data="data"
        :titles="['未选中栏', '已选中栏']"
    >
    </el-transfer>
    <div class="btnClass">
        <el-button size="small" type="primary" @click="submit()">提交</el-button>
    </div>
</el-card>

// js部分

value: number[] = []
data: Array<{ sort: number, key: number, label: string}> = [
   { sort: 1, key: 5001, label: '序号' },
   { sort: 2, key: 5002, label: '告警编号' },
   { sort: 3, key: 5003, label: '告警序号' },
   { sort: 4, key: 5004, label: '告警时间' },
   { sort: 5, key: 5005, label: '告警类型' }
]

formIndex: number = -1
formOption: any = null

// 官方的推荐写法中,renderFunc使用的jsx来写的,但是在vue2中使用jsx语法试了几次都不能通过ts的规则校验,
// 于是改用render
renderFunc(h, option) {
   let temp = `${option.label}`
    return h('span', {
        on: {
            'dragstart': ($event) => {
                this.formIndex = $event.target.__vue__.option.sort -1
                this.formOption = $event.target.__vue__.option
            },
            'dragover': ($event) => {
                $event.preventDefault();
                $event.dataTransfer.effectAllowed = "move";
                
            },
            'drop': ($event) => {
                let source = {
                    sort: $event.target.__vue__.option.sort,
                    key: this.formOption.key,
                    label: this.formOption.label
                }

                let target = {
                    sort: this.formIndex + 1,
                    key: $event.target.__vue__.option.key,
                    label: $event.target.__vue__.option.label
                }
                
                this.$set(this.data, this.formIndex, target)
                this.$set(this.data, $event.target.__vue__.option.sort -1, source)
            }
        },
        attrs: {
            draggable: true
        }
    }, temp)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

element-ui el-transfer添加拖拽排序功能 的相关文章

  • 仅将混合模式应用于投影

    可以混合吗only元素的投影与它重叠的元素的颜色 例如 我有一个元素与另一个元素重叠 顶部的元素有一个浅灰色的阴影 下面的元素是黑色的 我不希望对任何一个元素本身应用任何混合 但希望重叠元素 的投影与下面元素的颜色混合 在阴影落在重叠元素上
  • 使用 C# 以编程方式确定计算机的最大硬盘数据传输速率

    我使用 C 编写了一个小型 WPF 小部件 以三个小百分比类型条显示当前的 CPU 活动 使用的 RAM 和磁盘活动 为此 我使用了以下 PerformanceCounters diskCounter PerformanceCounter
  • Joomla 2.5 Jquery 无法调用 null 的方法

    大家好 我正在使用 Joomla 2 5 和 Jquery 我在 chrome 控制台中遇到了这个奇怪的错误 Uncaught TypeError Cannot call method slideUp of null 这是index php
  • 从数组中删除元素(Java)[重复]

    这个问题在这里已经有答案了 有没有快速 而且美观 的方法来从 Java 数组中删除元素 您可以使用 commons lang 的 ArrayUtils array ArrayUtils removeElement array element
  • vue使用elementui select下拉库组件鼠标hover出现下拉框

    mounted 生命周期里去监听 鼠标进入和鼠标移出事件 this refs mySelect addEventListener mouseenter function this querySelector selectel el sele
  • jQuery 选择具有相同类的随机元素

    我有 selectElement 类的元素 当我单击具有该类的元素时 我 选择 它 并给它另一个类 selectedElements 如果它还没有 但是 我有一个按钮 应该随机选择一定数量 例如 10 的 selectElement 类元素
  • 如何从网页复制特定元素

    我的目标是从网页中获取特定的文本区域 想象一下 就好像您能够在页面上的任何位置绘制一个矩形 并且该矩形中的所有内容都将被复制到剪贴板中 我正在使用 FireBug 请随意建议其他解决方案 我已经搜索了插件或书签 但没有找到任何有用的东西 及
  • 获取显示器内部元素的大小:无父级

    我正在尝试获取将在 jquery ui 对话框中显示的元素的宽度 该对话框设置为在加载时显示 无 这不允许我获得宽度 我是否需要显示它 获取宽度并立即再次隐藏它以获取宽度 或者还有其他我不知道的选择吗 Thanks 您有两个选择 如果你的
  • Vuejs 元素值变化事件?

    我有一个元素想要观察这样的变化 span class lower 50 span 用 vuejs 可以干净地做到这一点吗 我尝试查看文档 但找不到类似的内容 我想在 VueJs 中每当 50 更改为其他内容时启动一个自定义事件 你有没有尝试
  • 从 C# 中的 List 中选择 N 个随机元素

    我需要一个快速算法从通用列表中选择 5 个随机元素 例如 我想从 a 中获取 5 个随机元素List
  • 在 Java 中将 Element(org.w3c.dom) 转换为字符串

    我在将 Element 对象转换为 String 时遇到一个小问题 因为我需要将一个字符串传递给特定的方法 我尝试过使用 toString 或使用分配给它的字符串变量 没有一项试验是正确的 我们怎样才能轻松地进行转换 并且字符串对象还应该显
  • 如何在Python中删除两个numpy数组的重复元素

    我有两个数组命名 u v 例如 u np array 1 0 2 0 2 0 3 0 4 0 v np array 10 0 21 0 18 0 30 0 40 0 a np array 100 0 210 0 220 0 300 0 40
  • 在Java中一次向ArrayList添加多个项目[重复]

    这个问题在这里已经有答案了 如何一次向 ArrayList 添加多个项目 ArrayList
  • Json压缩传输

    我想知道基于 javascript 的 json 压缩的当前状态是什么 当前是否有任何库允许通过用单个字符替换长名称或其他方法来压缩 json 有人有用 Javascript 实现 HPPack https github com WebRe
  • Octave/Matlab:向向量添加新元素

    有一个向量x我必须添加一个元素 newElem 有什么区别吗 x end 1 newElem and x x newElem x end 1 newElem更稳健一些 x x newElem 仅当x是行向量 如果它是列向量x x newEl
  • MVC 在视图之间传输数据

    我刚刚开始学习 MVC 并试图了解它是如何工作的 我不想将用户发送到所有编辑 插入和列表操作的不同视图 在我的示例应用程序中 视图包含项目列表 列表下方有一个带有操作 Controller Create 的表单 用于插入新项目 但没有创建视
  • vb.net 从数组中删除第一个元素

    一种答案是创建一个短一个元素的新数组 还有其他更简单的方法可以做到这一点吗 您可以使用 LINQ 以非常简洁的代码生成结果 Dim a2 a Skip 1 ToArray 批评者可能会说这很慢 您应该使用Array Copy反而 Dim a
  • AngularJS 指令 - 设置多个指令元素的顺序(不是指令的优先级,而是元素的优先级)

    考虑带有指令 foo 的标记 div div div div div div 使 foo 按指定顺序而不是从上到下 3 1 2 运行的好方法是什么 我唯一能想到做的就是跟踪已运行的内容并在不按顺序的项目上返回 false 然后让 Angul
  • 如何解决 TypeError: element_to_be_clickable() 需要 1 个位置参数?

    我收到错误TypeError element to be clickable takes 1 positional argument but 2 were given当我运行以下代码时 from selenium webdriver chr
  • 如何实现返回“弹出”元素(即数据/值)的“Pop”函数? (链表堆栈)

    对于如何实现同时弹出元素并将其作为返回值返回的单个函数感到困惑 到目前为止 我所看到的都是 pop 函数 它们返回指向堆栈新头的指针 这是一个开始 但是 define VALUE int typedef struct node t VALU

随机推荐