首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用VueJS / SortableJS中的动态列表将项目从一个列表拖动到另一个列表

VueJS是一种流行的JavaScript框架,用于构建用户界面。它提供了一种灵活且高效的方式来处理动态数据。而SortableJS是一个用于处理拖拽排序功能的库,可以与VueJS很好地配合使用。

使用VueJS和SortableJS实现将项目从一个列表拖动到另一个列表的过程可以按照以下步骤进行:

  1. 引入VueJS和SortableJS的库文件。你可以通过在HTML文件中添加相应的<script>标签来引入它们,或者通过npm安装并使用模块化方式引入。
  2. 创建Vue实例,并定义两个列表的数据。你可以使用Vue的data选项来定义数据,并将其绑定到HTML元素上。
  3. 在模板中使用Vue的v-for指令,循环渲染第一个列表的项目。每个项目需要添加一个SortableJS的data-id属性,以便在拖动时能够识别它。
  4. 使用Vue的v-on:drag指令和SortableJS的onSort方法,监听列表项目的拖动事件。当开始拖动时,将拖动的项目的数据存储到Vue实例中。
  5. 在第二个列表中,同样使用Vue的v-for指令渲染项目,并使用SortableJS的onAdd方法,在项目被拖动到第二个列表时触发。在该方法中,你可以从Vue实例中获取到之前存储的拖动项目的数据,并将其添加到第二个列表中。

下面是一个示例代码:

代码语言:txt
复制
<!DOCTYPE html>
<html>
<head>
  <title>Drag and Drop with VueJS and SortableJS</title>
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/sortablejs@1.11.0/Sortable.min.js"></script>
</head>
<body>
  <div id="app">
    <h2>列表1</h2>
    <ul>
      <li v-for="item in list1" :key="item.id" :data-id="item.id" v-on:drag="saveDragItem">{{ item.name }}</li>
    </ul>
    
    <h2>列表2</h2>
    <ul>
      <li v-for="item in list2" :key="item.id">{{ item.name }}</li>
    </ul>
  </div>

  <script>
    new Vue({
      el: '#app',
      data: {
        list1: [
          { id: 1, name: '项目1' },
          { id: 2, name: '项目2' },
          { id: 3, name: '项目3' }
        ],
        list2: []
      },
      methods: {
        saveDragItem(event) {
          const itemId = event.target.dataset.id;
          const item = this.list1.find(item => item.id.toString() === itemId);
          this.list1 = this.list1.filter(item => item.id.toString() !== itemId);
          this.$nextTick(() => {
            event.target.style.opacity = '0.5';
          });
          event.dataTransfer.setData('text/plain', JSON.stringify(item));
        }
      },
      mounted() {
        new Sortable(document.querySelector('ul'), {
          group: 'shared',
          animation: 150,
          onAdd: (event) => {
            const item = JSON.parse(event.dataTransfer.getData('text/plain'));
            this.list2.push(item);
            event.target.style.opacity = '1';
          }
        });
      }
    });
  </script>
</body>
</html>

在这个示例中,我们创建了一个Vue实例,定义了list1list2两个列表的数据。通过使用Vue的v-for指令,我们在模板中循环渲染了两个列表。使用SortableJS库来实现拖拽排序的功能。当拖动列表项目时,会触发Vue实例中的saveDragItem方法,将拖动的项目存储到Vue实例中。当拖动项目到第二个列表时,会触发SortableJS的onAdd方法,将之前存储的项目添加到第二个列表中。

这只是一个简单的示例,你可以根据实际需求进行扩展和优化。对于更复杂的应用场景,你可能需要结合其他技术和工具来实现更多功能,如网络通信、数据库操作等。

腾讯云提供了一系列与云计算相关的产品,其中包括云服务器、云数据库、人工智能、物联网和存储等。你可以根据具体需求选择相应的产品,更多详细信息和产品介绍可以参考腾讯云官方文档:

请注意,以上答案仅供参考,实际应用中可能需要根据具体情况进行调整。同时,还建议对提到的技术和工具进行更深入的学习和了解。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

(长文预警) 你还在烦工作碰到拖拽问题?一框架jiejue

特征 支持触摸设备和现代浏览器(包括IE9) 可以从一列表动到另一个列表或在同一列表内 支持拖动手柄和可选文本(比voidberghtml5sortable更好) 智能自动滚动 高级交换检测 流畅动画...&.cancel { margin-left: 10px; } } } } } 参数一一说明 要将元素从一列表拖到另一个列表..."baz", "qux"]|function 是可以从其他列表添加元素,还是可以从中添加元素组名数组 revertClone:boolean—在移动到另一个列表后,克隆元素恢复到初始位置 dragUlKey...指定以像素为单位鼠标在被视为拖动之前应移动距离。如果项目也可以单击,例如在链接列表,则很有用。 当用户在可排序元素内单击时,在按下和松开之间,您手通常会略微移动。...交换插件 该插件修改了Sortable行为,以允许项目彼此交换而不是进行排序。一旦开始拖动,用户就可以将其拖动到其他项目上,并且元素不会发生任何变化。但是,用户放置项目将与原始拖动项目交换 ?

7.1K10

整理了12款开源拖拽库, 轻松上手可视化搭建

目前我把整理可视化相关开源项目都汇总到如下网站,其中包含拖拽搭建,可视化搭建开源项目和酷炫开源图表库,感兴趣可以收藏一下~: 可视化导航地址:http://wep.turntip.cn/web...Interact.js 「interact.js」 是一 「JavaScript」 资源库提供,放,调整尺寸和多点触摸手势功能用于现代浏览器。...「API」 目标组件进行包裹,即可实现拖动或接受拖动元素功能。...Sortable 「Sortable」 —是一「JavaScript」库,用于在现代浏览器和触摸设备上对拖放列表进行重新排序。无需「jQuery」。...它提供了一视觉效果引擎,一拖放库(包括可排序列表),几个控件(基于「Ajax」动态下拉列表,原地编辑,滑块)等等。

1K20
  • sortablejs插件在el-table运用

    sortablejs插件在el-table运用 概述需求 有一Table表格,由于数据是根据自增ID进行排序显示,有时了调整顺序会在数据库中直接操作数据表,来达到调整数据顺序目的,因为为了实现在页面实现较为简单拖拽排序...插件 首先引入依赖,并重启项目 npm install sortablejs --save 2、实现效果 首先看下实现效果如下: 1、这是原来顺序:[1, 2, 3, 4] 2、通过鼠标拖拉即可改变位置...newIndex:行数据移动到新位置,起始角标为0。 oldIndex: 行数据原始位置。...举个例子:第四行移动到第一行,执行顺序如下: 1、首先根据取得oldIndex=3,取得第四列id 2、第四列Id插入newIndex=0位置,而后其余数据一次后排。...MyBatis实现数据表ID更新 使用MyBatis框架,通过动态SQL实现功能。

    1.2K50

    尤雨溪推荐拖拽插件,支持Vue2Vue3

    如果你想找一 Vue 2 和 Vue 3 都能使用拖拽库,这个看起来很不错。...—Vue.js 作者尤雨溪 ps:按照官方说法,由于 Sortablejs vue3 组件一直没有更新,已经跟 vue3 严重脱节,所以诞生了这个VueDraggablePlus项目。...在任何元素上使用拖拽列表Sortablejs 官方以往 Vue 组件,都是通过使用组件作为列表直接子元素来实现拖拽列表。...当我们使用一些组件库时,如果组件库没有提供列表根元素插槽,我们很难实现拖拽列表! VueDraggablePlus完美解决了这个问题。...它可以让你在任何元素上使用拖拽列表,我们可以使用指定元素选择器,来获取到列表根元素,然后列表根元素作为 Sortablejs container。这样我们就不用自己再包一层啦。

    4.9K10

    根据公司业务需求我是如何封装组件

    sortablejs -S 在项目中我是使用sortablejs实现拖拽,以及使用elemnt-ui分页组件实现分页功能。...以及v-on事件一一绑定到元素上。组件中使用了 \attrs[1]对象属性集合和\listeners[2]对象事件集合来实现属性跨阶级传递,监听事件传递。...,来完成每行编码,并将其属性进行绑定。在实现每行过程使用了 vue 提供动态组件component来实现动态标签渲染。...openAllTree其实现思想是通过改变数据,让数据去驱动视图;在递归组件中封装一函数用来当前作用域内部属性更新,在 table 组件循环执行每一递归组件函数。...给每一递归组件绑定一ref属性,那么通过 new Sortable 实例实现同层级拖拽(这里同层级就是相同层级节点并且同父节点可互)。

    3.7K10

    前端里拖拖拽拽了解一下?

    最近在项目使用了 react-dnd[1],一基于 HTML5 拖拽库,“拖拽能力”丰富了前端交互方式,基于拖拽能力,会扩展各种各样拖拽反馈效果,因此有必要学习了解,最好学习方式就是实操!...一、HTML5 拖放 (Drag)和放(Drop)是 HTML5 标准组成部分,了解掌握之后,举一反三,有助于提升我们在拖拽场景下技术方案设计能力。...1.3 DataTransfer 在上述事件类型,不难发现,放置元素和拖动元素分别绑定了自己事件,可如何拖拽元素和放置元素建立联系以及传递数据?...另外目前 API 不算多,例如我们想要定制化拖拽图片大小、鼠标样式等,目前暂时没发现比较方便解决方式,但是从另一个角度来说,让我们对于拖拽能力设计和标准有了一更深切认识,对于设计实现拖拽交互有了一...二、手搓一 有了上面的基础知识,那么实现一列表拖拽排序并不是什么难事。

    4.8K30

    Mac 热键大全

    ) …………………………….Option + 左方向键 打开选择目录所有目录 (列表模式) …………….Command + Option + 右方向键 关闭选择目录所有目录 (列表模式) …...http://hovertree.com/h/bjaf/a28c7owl.htm 二、使用显示图像或文件夹工作时巧妙使用: 1.鼠标边按图像或文件夹可以打开图像或文件夹;  2.用鼠标拖曳图像或文件夹可以移动到所需位置...3.按住“Optionion”+鼠标图像或文件夹可以图像或文件夹拷贝到其它文件夹,而不是移动;  4.在拖曳图像或文件夹时图像或文件夹至窗口上端菜单栏可以取消对它移动或拷贝; 5.按住“...6.按住“return”或“enter”键可以编辑所选图像或文件夹名称;  7.按任一字母键选择以该字母开头而命名图像或文件夹;  8.同时按住“shift+tab”键按字母顺序选择上一图像或文件夹...(注:中文名称以第一汉语拼音第一英文字母为准);  9.按方向右键或方向左键选择左面或右面的图像或文件夹;按方向上键或方向下键选择上面或下面的图像或文件夹;  10.按“shift”+点按所需图像或文件夹可以选择多个图像或文件夹

    1.9K50

    为什么43%前端开发者想学Vue.js

    Vue目也是为了进步,意思就是如果你有一现有的应用程序存在只占一部分前端,你需要更多互动体验那么就可以使用Vue。 或者,您也可以从一开始就在前端构建更多业务逻辑。...因此,我们不必使用单一产品,而是使用一系列产品,并将H2更新为无序列表。创建一元素每一产品,我们会使用一种特殊属性(又名指令)Vue称为v-for。...这仍然有点人为设计,所以让我们先把列表清空,然后从实际API取出我们产品列表,这些API可能来自某个数据库。 ? 如果我们查看打印到页面的内容,我们看到: ?...我们只想在我们item.quantity = = = 0出现,所以我们将使用Vuev-if指令。 ? 当然,我们夹克已经没货了: ? 如果我们想打印出我们列表产品总数呢?...还有一些Vue响应,让我们看看在数组删除2项会发生什么。正如你在下面看到,不仅是我们名单更新了,而且我们总数也是如此。 ? 接下来,我向您展示如何通过使用按钮来增加对该页面的交互性。

    1.3K20

    【JS】1724- 重学 JavaScript API - Drag and Drop API

    通过拖放 API,我们可以实现将可拖拽(draggable)元素拖动到另一个可放置(droppable)元素,以及实现交互式拖放体验。...这里介绍几个常见使用场景: 相册应用,用户可以拖动图片到不同分组或标签中进行分类; 项目任务管理应用,用户可以拖动任务卡片进行排序或分组; 文件上传功能,用户可以文件拖动到指定区域进行上传;...通过这样实现,用户可以轻松地图片拖动到不同相册中进行分类和管理。 3.2 项目任务管理应用 在项目任务管理应用,用户可以通过拖动任务卡片进行排序、分组或更改任务状态。...下面是一简单示例代码,演示了如何使用拖放 API 实现项目任务管理应用拖放功能: <div class="task" draggable="true...; <em>使用</em> drop 事件在任务<em>列表</em>容器<em>中</em>创建新<em>的</em>任务卡片。

    24620

    Mac 键盘快捷键

    Command-F:查找文稿项目或打开“查找”窗口。 Command-G:再次查找:查找之前所找到项目出现下一位置。要查找出现上一位置,请按 Shift-Command-G。...Option-Command-T:在当前“访达”窗口中有单个标签页开着状态下显示或隐藏工具栏。 Option-Command-V:移动:剪贴板文件从原始位置移动到当前位置。...连按 Command 键:在单独标签页或窗口中打开文件夹。 按住 Command 键移到另一个宗卷:项目移到另一个宗卷,而不是拷贝它。 按住 Option 键移:拷贝托移项目。...项目时指针会随之变化。 移时按住 Option-Command:为项目制作替身。项目时指针会随之变化。 按住 Option 键点按开合三角:打开所选文件夹内所有文件夹。...这个快捷键仅在列表视图中有效。 按住 Command 键点按窗口标题:查看包含当前文件夹文件夹。 了解如何使用 Command 或 Shift 在“访达”中选择多个项目

    2.7K20

    Mac快捷键

    要了解更多快捷键,请查看您所用 app 菜单。每个 app 都有其自己快捷键,并且一 app 中使用快捷键可能不适用于另一个 app。...Command-Option-V移动:剪贴板文件从其原始位置移动到当前位置。...Command-Y使用“快速查看”预览所选文件。Command-1以图标方式显示 Finder 窗口中项目。Command-2以列表方式显示 Finder 窗口中项目。...此快捷键可与任一音量键搭配使用移时按 Command 键项目移到其他宗卷或位置。项目时指针会随之变化。移时按 Option 键拷贝项目项目时指针会随之变化。...移时按 Command-Option为项目制作替身。项目时指针会随之变化。Option-点按伸缩三角形打开所选文件夹内所有文件夹。此快捷键仅在列表视图中有效。

    1.7K20

    MacBook Pro最全快捷键指南——高效型选手必备

    Command-F:查找文稿项目或打开“查找”窗口。 Command-G再次查找:查找之前所找到项目出现下一位置。要查找出现上一位置,请按 Command-Shift-G。...Option-Command-T 在当前“访达”窗口中有单个标签页开着状态下显示或隐藏工具栏。 Option-Command-V 移动:剪贴板文件从原始位置移动到当前位置。...Command-2 以列表方式显示“访达”窗口中项目。 Command-3 以分栏方式显示“访达”窗口中项目。 Command-4 以封面流方式显示“访达”窗口中项目。...这个快捷键可与任一音量键搭配使用。 按住 Command 键项目移到其他宗卷或位置。项目时指针会随之变化。 按住 Option 键移 拷贝项目项目时指针会随之变化。...按住 Option-Command 键移 为项目制作替身。项目时指针会随之变化。 按住 Option 键点按开合三角 打开所选文件夹内所有文件夹。这个快捷键仅在列表视图中有效。

    6.1K40

    Vue - 自定义组件双向绑定

    前言 无论在任何语言或框架,我们都提倡代码复用性。对于Vue来说也是如此,相同代码逻辑会被封装成组件,除了复用之外,更重要是统一管理提高开发效率。...我真就接手过一项目,多个页面都会用到列表,没有去封装列表组件,只要有一点改动,每个页面都得加上。很肯定说,没有用组件化开发Vue项目是没有灵魂。...,activeName 需要使用者额外通过事件来手动更新,假如有另一个使用者接手,在不知道这种情况下使用,会出现tab没有切换情况。...由于prop是单向数据流,父级prop更新会向下流动到子组件,相反在子组件内部直接更新状态,会导致数据流向不明确。...model: https://cn.vuejs.org/v2/api/#model 在model选项里,我们可以绑定一属性,并为其添加事件,只需在调用方法时传入值即可更新属性。

    1K20

    17、数据渲染到组件(列表渲染、模板语法、父子组件之间传值)

    /list.html 我们用 v-for 指令根据一组数组选项列表进行渲染。...vue官网 (2)模板语法 https://cn.vuejs.org/v2/guide/syntax.html 我们获取到值要用模板语法值插入到页面, 数据绑定最常见形式就是使用Mustache...vue官网 具体我们在项目中动手实现简单传值。 2、项目运用 (1)数据赋值于data 上一篇我们用axios获取了数据并打印了,现在我们先把数据赋值data属性。 ?...很简单,在props定义属性名就可以了; 然后用type定义一下传过来数据类型,进行验证;default属性则是定了默认值。 ?...分类模块数据渲染 (4)推荐模块 这是除了使用前面提到列表渲染外,就是使用Mustache语法 (双大括号) 文本插值了。 ?

    4.4K10

    Mac下键盘使用

    Command-F 查找文稿项目或打开“查找”窗口。 Command-G 再次查找:查找之前所找到项目出现下一位置。要查找出现上一位置,请按 Command-Shift-G。...Option-Command-T 在当前 Finder 窗口中有单个标签页开着状态下显示或隐藏工具栏。 Option-Command-V 移动:剪贴板文件从原始位置移动到当前位置。...Command-2 以列表方式显示 Finder 窗口中项目。 Command-3 以分栏方式显示 Finder 窗口中项目。...这个快捷键可与任一音量键搭配使用移时按 Command 键 项目移到其他宗卷或位置。项目时指针会随之变化。 移时按住 Option 键 拷贝项目。...项目时指针会随之变化。 移时按住 Option-Command 为项目制作替身。项目时指针会随之变化。 Option-点按开合三角形 打开所选文件夹内所有文件夹。

    2.8K130

    ArcGIS Pro动态投影和地理变换

    你拿到地图,把它们一地放在一张桌子上,然后……它们不匹配。它们是在不同坐标系绘制。在它们可以一起使用之前,您需要重绘其中一。你知道如何手动地图从一坐标系重新绘制到另一个坐标系吗?...我们这些切换方法称为动态投影和地理变换。 ? 投影数据 ? 使用投影工具时,输入数据,工具可以将其从当前坐标系转换为另一个坐标系。 ?...差异很小,因此您可能不会注意到它位于错误位置,但这只会使问题变得更糟。 地理变换是地理坐标(纬度和经度)从一 GCS 转换为另一个 GCS 计算,以便它们会在正确位置绘制。...坏消息是,推荐顺序可能会因数据位置和范围而异。政府批准转型可能不会出现在列表顶部。此外,新转换经常被添加到列表。所有这些因素都会导致可能不一致。有时可能没有任何可用转换。 ?...使用项目工具仅应用一次它们是管理数据更稳定和可预测方式。确定要使用数据后,最好使用投影工具来确保所有数据图层和地图使用相同坐标系。 ? 转换技巧 ?

    2.2K30

    mac键盘快捷键使用大全_苹果电脑shift是哪个键

    这同样适用于“访达”文件 Command + V 剪贴板内容粘贴到当前文稿或 App 。这同样适用于“访达”文件 Command + Z 撤销上一命令。...在某些 App ,您可以撤销和重做多个命令 Command + A 全选各项 Command + F 查找文稿项目或打开“查找”窗口 Command + G 再次查找:查找之前所找到项目出现下一位置...Option + Command + V 移动:剪贴板文件从原始位置移动到当前位置 Command + Y 使用“快速查看”预览所选文件 Option + Command + Y 显示所选文件快速查看幻灯片显示...,然后关闭原始窗口 连按 Command 键 在单独标签页或窗口中打开文件夹 按住 Command 键移到另一个宗卷 项目移到另一个宗卷,而不是拷贝它 按住 Option 键移 拷贝项目...项目时指针会随之变化 移时按住 Option + Command 为项目制作替身。项目时指针会随之变化 按住 Option 键点按开合三角 打开所选文件夹内所有文件夹。

    4.4K20

    mac全选文字快捷键_MACBOOK最全快捷键指南

    Command-F:查找文稿项目或打开“查找”窗口。 Command-G再次查找:查找之前所找到项目出现下一位置。要査找出现上一位置,请按 Command-Shift-G。...Option- Command-V移动:剪贴板文件从原始位置移动到当前位置。 Option- Command-Y显示所选文件快速查看幻灯片显示。...Command-2以列表方式显示“访达”窗口中项目 Command-3以分栏方式显示“访达”窗口中项目。...这个快捷键可与任一音量键搭配使用。 按住 Command键项目移到其他宗卷或位置。项目时指针会随之变化。 按住 Option键移拷贝项目项目时指针会随之变化。...按住 Option- Command键移为项目制作替身。项目时指针会随之变化。 按住 Option键点按开合三角打开所选文件夹内所有文 件夹。这个快捷键仅在列表视图中有效。

    2.3K10

    视频无缝续播一些解决方案

    无缝续播切换 现如今互联网最火两大领域一是人工智能,另一个就是以抖音、火山小视频为首短视频APP。...我们在使用这些短视频APP时候又一很好体验就是从一视频播放从一界面跳转到另外一页面的时候视频总是能无缝衔接,不会出现重新加载播放现象。所以今天我们就来聊音视频无缝衔接播放问题。...对于使用切换surfaceView原理是解码器动态关联不同渲染视图(RenderView),比如使用MediaPlayer动态关联SurfaceView,就如同一电脑主机不断连接不同显示器。...至于使用移动View方式进行界面无缝续播方案,可能会导致View缺失问题,导致播放界面可能会出现空白,特别是列表播放需求情景。...开始请求新url数据,然后重新下载到流媒体数据送给解码器,重新启动解码,然后渲染输出。达到无缝切换效果。

    2.3K10
    领券