vue中使用vuedraggable实现嵌套多层拖拽排序功能

2023-11-08

前言:

  vue中实现嵌套多层拖拽功能。

官网入口:https://www.npmjs.com/package/vuedraggable

实现效果:(拖动左侧调整一级的顺序,拖动右侧调整二级的顺序)

实现步骤:

***这里使用了插件  vuedraggable

第一步:安装插件

cnpm install vuedraggable --save

第二步:在页面上引入插件并注册

import draggable from 'vuedraggable'
components: {
    draggable
  },

第三步:页面上使用

<template>
  <div class="wholeList">
    <draggable
      class="leftCon"
      :list="tolList"
    >
      <div class="leftConLi" v-for="element in tolList" :key="element.id">
        {{ element.name }}
      </div>
    </draggable>
    <ul class="oneUl">
      <li
        class="oneLi"
        v-for="(item,index) in tolList"
        :key="index"
      >
        <!--拖拽内容部分-1-->
        <draggable
          v-if="index === 0"
          class="dragArea list-group"
          :list="item.children"
          :clone="clone"
          :group="{ name: 'people', pull: pullFunction }"
          @start="start"
        >
          <div v-for="element in item.children" :key="element.id" class="list-group-item">
            {{ element.name }}
          </div>
        </draggable>
        <!--拖拽内容部分-其他-->
        <draggable
          v-else
          class="dragArea list-group"
          :list="item.children"
          :clone="clone"
          group="people"
        >
          <div v-for="element in item.children" :key="element.id" class="list-group-item">
            {{ element.name }}
          </div>
        </draggable>
      </li>

    </ul>

    <el-button @click="getNewList">点我看console里面的最新数据</el-button>
  </div>
</template>

<script>
import draggable from 'vuedraggable'
export default {
  components: {
    draggable
  },
  data() {
    return {
      tolList: [
        {
          name: '第一天',
          children: [
            {
              name: '11111', id: 1
            }
          ]
        }, {
          name: '第二天',
          children: [
            {
              name: 'aaaaa', id: 11
            }, {
              name: 'bbbbbb', id: 12
            }
          ]
        },
        {
          name: '第三天',
          children: [
            {
              name: ',,,111,,', id: 21
            }
          ]
        }
      ],
      controlOnStart: true
    }
  },
  methods: {
    clone({ name, id }) {
      return { name, id: id }
    },
    pullFunction() {
      return this.controlOnStart ? 'clone' : true
    },
    start({ originalEvent }) {
      this.controlOnStart = originalEvent.ctrlKey
    },
    getNewList() {
      let a = this.tolList
      console.log(a)
    }
  }
}
</script>
<style lang="scss" scoped>
  .wholeList{
    margin-top:200px;
    width:500px;
    display: flex;
    flex-wrap: wrap;
    .leftCon{
      width: 100px;
      .leftConLi{
        background: #42B974;
        line-height: 80px;
        margin-bottom:10px;
      }
    }
    .oneUl{
      width: calc(100% - 100px);
      .oneLi{
        display: flex;
        height: 80px;
        margin-bottom:10px;
        border:1px solid red;
        .dragArea{
          width: 100%;
          min-height: 30px;
        }
      }

    }
  }
</style>

到此为止!

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue中使用vuedraggable实现嵌套多层拖拽排序功能 的相关文章

  • 解决vxe-table复选框翻页选中问题

    解决vxe table复选框翻页选中问题 根据vxe table官方文档 想要保留勾选中的数据 我们的代码中需要设置 row id 和 checkbox config中的 reserve 属性 vxe table官方文档 简单写下html部
  • Vue + Element UI 前端篇(十一):第三方图标库

    Vue Element UI 实现权限管理系统 前端篇 十一 第三方图标库 使用第三方图标库 用过Elment的同鞋都知道 Element UI提供的字体图符少之又少 实在是不够用啊 幸好现在有不少丰富的第三方图标库可用 引入也不会很麻烦
  • Vue2运行报错SyntaxError: Cannot use import statement outside a module

    问题描述 像配置vue3那样配置vue config js的路径代理 代替src后 报错 语法错误 不能在模块外部使用导入语句 原因 模块语法一个是CommonJS module 一个是 ES6 module vue config js里的
  • 5 款最棒的 Vue 移动端 UI 组件库 - 特别针对国内使用场景推荐

    本文完整版 最棒的 Vue 移动端 UI 组件库 特别针对国内使用场景推荐 Vue 移动端 UI 组件库推荐 Vant 3 有赞移动 UI 组件库 支持 Vue 3 微信小程序 支付宝小程序 Cube UI 滴滴出行移动端 UI 库 质量可
  • 包管理工具那么多,怎么选?npm、yarn 和 pnpm 三者比较及使用详解!

    1 简介 在 Vue 项目中 我们需要使用许多第三方依赖库 如 Vue Router Vuex Axios Element UI 等等 这些依赖库通常以 NPM 包的形式提供 而且在使用时需要进行版本管理 因此 我们需要使用一个包管理工具来
  • mapState的使用(常用)

    mapState作用 可以辅助获取到多个state的值 怎么使用 1 在 vue组件中引入 在js块中引入 import mapState from vuex 2 在 vue组件中computed下定义一个对象 computed mapSt
  • vue prop属性使用方法小结

    Prop 一 基本用法 Prop的基本用法很简单 作用是在子组件中接收父组件的值 父组件传值
  • vue动态绑定video视频src问题解决

    做个项目 视频部分需要先后台上传 然后前端页面显示 然后就遇到了视频动态获取地址的问题 一开始想着很简单 使用v model双向绑定就行了 结果试了下并不行 后面开始度娘 尝试过很多人说的 refs解决 结果并不行 虽然浏览器中看地址确实绑
  • Vue项目的部署(服务器)

    Vue项目的部署 服务器 前几天帮朋友写了一个可以动态查看地点温度的前端项目 目前已经部署上线了 访问链接点这里 服务器是朋友的 倒时候打不开会很正常 说不定又使用服务器玩大数据项目去了 效果图 图一 图二 当然 温度也都是实时跟新的 而且
  • Vue-cli3更改项目logo图标

    1 图标切成对应大小 2 图标名称后缀与vue原有图标logo名称 后缀一致 favicon ico 并替换 3 vue项目根目录下 新建 vue config js 添加下列代码 module exports pwa iconPaths
  • H5查看pdf文件(pdfh5)

    我用的是 pdfh5 来查看的H5中的pdf文件 使用 pdfh5 插件来打开 pdf文件 下面是两种使用方法 方法一 二都可以 但是我在使用方法二时有卡顿现象 可能是因为未开启懒加载 方法二中的 on 可以打印出来错误信息 使用方法 1
  • 前端的工程化、模块化和组件化

    什么是工程化 工程化是一种思想而不是某种特定的技术 当然我们在实现项目工程化的过程中 我们也会去使用一些技术 前端工程化是使用软件工程的技术和方法来对前端的开发流程 技术 工具等进行规范化 标准化 其主要目的为了提高效率和降低成本 即提高开
  • 黑豹程序员-自定义表单实现门户自定制

    功能 用户可以实现欢迎页面自己定制 数据由数据库表进行维护 原理 页面利用div进行布局 拖动div记录其坐标 并写库 页面加载时从数据库表中读取div坐标和数据即可 效果图
  • Vue学习之watch侦听器:案例实现翻译功能

    watch侦听器 作用 监视数据的变化 当数据发生变化时 执行一些业务逻辑或者是异步操作 执行的场景例如在线翻译 当文本区域的内容发生变化时 会发生翻译内容的同时更新 语法 简单的写法 简单数据类型 可以直接的进行监听 完整的写法 添加额外
  • 基于vue2+海康威视web开发包3.2 无插件版本开发的监控系统

    文章目录 前言 一 插件准备 二 使用步骤 前言 项目最终效果为 可以预览 并且可以使用云台控制 购买的海康威视摄像头必须可以开启websocket 一 插件准备 插件下载地址 下载WEB无插件开发包V3 2 并加入到vue项目中 下载后解
  • Vue3+Echarts:堆积柱状图的绘制

    一 需求 在Vue3项目中 想用Echarts来绘制堆积柱状图 去展示最近一周APP在不同渠道的登录人数 效果如下 二 实现 关于Echarts的下载安装以及图表的样式设计 此处不展开 1 Templates部分
  • 执行tsc -v命令后报错‘tsc‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。怎样解决?

    分析 tsc v 这个命令主要是查看typescript编译器的版本号的 也可以用于检查typescript是否安装好了 是否正常 1 如果没有安装的话 就去安装 可以使用 npm ls typescript 查看本地是否安装typescr
  • 【vue】$bus 跨组件调用方法

    1 新建bus js import Vue from vue 使用 Event Bus const bus new Vue export default bus 2 main js引用 import bus from libs bus Vu
  • 拓展:vue 父组件调用子组件方法ref(且父组件可通过ref调用的方法传值给子组件)

    1 ref被用来给元素或子组件注册引用信息 引用信息将会注册在父组件的 refs对象上 一 ref被用来给元素或子组件注册引用信息 引用信息将会注册在父组件的 refs对象上 div class formBtn fl 111 div div
  • vue中的防抖和节流

    在Vue中 防抖和节流是两种常用的优化技术 用于限制事件的触发频率 以提高页面性能 防抖 Debounce 是指在事件被触发后 等待一段时间后再执行回调函数 如果在这段等待时间内 事件又被触发 则重新计时 防抖通常用于限制重复触发频率较高的

随机推荐

  • 代码随想录算法训练营19期第36天

    435 无重叠区间 代码随想录 初步思路 重叠区间 贪心 总结 按照右边界排序 从左向右记录非交叉区间的个数 最后用区间总数减去非交叉区间的个数就是需要移除的区间个数 如果按照左边界排序直接求 重叠的区间 使用变量count为记录重叠区间数
  • 单一职责原则

    单一职责原则 就一个类而言 应该只有一个引起它变化的原因 如果一个类承担的职责过多就等于把这些职责耦合在一起 至少会造成以下两方面的问题 我们要去修改该类中的一个职责可能会影响到该类的其它职责 这种耦合会导致脆弱的设计 当变化发生时 设计会
  • 一个月能做什么?成长&感悟分享

    一个月做了什么 八月做了些什么 单词打卡 第一件事情就是单词打卡 英语很差的我 一样继续打卡 今天是第736天 当你还在纠结扇贝和不背 可可英语哪一个好的时候 别人已经同时使用了 当你还在咨询学编程 敲代码需不需要英语的时候 别人已经开始同
  • springboot整合log4j打印日志

    1 排除springboot自带log依赖
  • Hamcrest 测试匹配框架

    为什么要用Hamcrest匹配器框架 Hamcrest是一款软件测试框架 可以通过现有的匹配器类检查代码中的条件 也可以通过自定义的匹配器实现 要在JUnit中使用Hamcrest匹配器 可以用它的assertThat语句 并且可添加一个或
  • pycharm打开chrome自动退出解决方法

    先查谷歌版本和驱动版本 from selenium import webdriver driver webdriver Chrome str1 driver capabilities browserVersion 查看chrome版本 st
  • ARP欺骗

    目录 一 ARP协议 二 ARP欺骗的原理 三 实验环境 四 实验步骤 一 ARP协议 每一个主机都有一个ARP高速缓存 此缓存中记录了最近一段时间内其它IP地址与其MAC地址的对应关系 如果本机想与某台主机通信 则首先在ARP高速缓存中查
  • ns2无线局域网隐藏节点仿真实验

    ns2无线局域网隐藏节点仿真实验 实验内容 实验原理 实验过程 相关模块安装 仿真模块 问题总结 问题一 问题二 问题三 实验内容 无线网络与移动技术第二次实验 用ns2完成无线局域网隐藏节点仿真实验 实验原理 隐藏节点指在接收节点的覆盖范
  • python中 random.randint 和 random.randrange 的区别

    python中 random randint 和 random randrange 的区别 在python中 通过导入random库 就能使用randint 和 randrange 这两个方法来产生随机整数 那这两个方法的区别在于什么地方呢
  • babel转译: es6转es5

    1 ECMAScipt和JavaScript的关系 96年javascript之父netscape 交给国际标准组织ECMA管理 ECMAScipt是javascript的一种规范 javascript是ECMAJavascript的一种实
  • 标定工具箱 OpenCalib: 自动驾驶多传感器的一个开源标定工具箱

    2022年5月30日上传arXiv的论文 OpenCalib A Multi sensor Calibration Toolbox for Autonomous Driving 作者来自商汤科技和上海AI实验室 准确的传感器标定是实现智能车
  • SpringBoot数据库密码动态配置

    一般的开发 我们都习惯把数据库密码配置在属性文件中 这样配置方便好用 但是缺点也是很明显的 这样配置的密码是静态的 明文的 一般都安全要求比较严格的公司 这些密码都会被统一管理 定期修改 我们需要动态获取密码 下面是结合SpringBoot
  • 功能升级,数据同步更便捷!场景化数据同步助您提效60%!

    在企业数仓建设初期 为了保障数字化转型的落地效果 需要提供充足的数据资源 除了基础的数据抽取 转换和加载等过程 数据的同步也是重要环节之一 数据同步常用于数仓ODS ADS层的建设 通过不同数据源的同步 保障数据的及时性和准确性 从而满足不
  • LeetCode 171. Excel 表列序号

    题目链接 https leetcode cn problems excel sheet column number 思路如下 类似于 26 26 26 进制转十进制 按权展开求和 C 代码如下 class Solution public i
  • mysql到底哪里错了#1054 - Unknown column '' in 'field list'

    和 是不同的两个符号 是字段名的的定界符 就是键盘上1左边那个符号 而 是单引号 是用在字符串上的的 所以后面的应该是 values 王柳 now 工人 注1 如果你的id是自增长 那就不能出现在语句中 应该是insert into tes
  • 基于Spring4+SpringMVC4+Mybatis3+Hibernate4+Junit4框架构建高性能企业级的部标GPS监控平台

    基于Spring4 SpringMVC4 Mybatis3 Hibernate4 Junit4框架构建高性能企业级的部标GPS监控平台 开发企业级的部标GPS监控平台 投入的开发力量很大 开发周期也很长 选择主流的开发语言以及成熟的开源技术
  • 浅谈_(js逆向)基础必备知识

    加粗样式随着技术的发展 js逆向成为爬虫必不可少的必备技术 我这里只是浅谈一下 根据自己的经验来说的 大蛇勿喷 js逆向 你首先得懂函数吧 例子 function per x y return x y 比如这个函数 function他是声明
  • 领悟《信号与系统》之 采样定理

    采样定理 采样定理 一 采样定理结论 二 奈奎斯特间隔和频率计算公式及例题 三 信号自然采样 脉冲采样 四 信号理想采样 冲激采样 采样定理 连续时间信号也叫模拟信号 在一定条件之下 模拟信号可以用该信号在等时间间隔点上的值或样本来表示 且
  • [创业之路-58] :公司、老板、专业性,优先级如何排序?

    公司 老板 专业性的优先级顺序 并不是固定不变的 要因情形而定 大公司 大多数人都在为公司打工 县官不如现管 在这样的公司 优先级如下 老板 专业性 公司 初创公司 专制型 这种公司 老板具有前瞻性 大多数决策都是正确的 在这样的公司 老板
  • vue中使用vuedraggable实现嵌套多层拖拽排序功能

    前言 vue中实现嵌套多层拖拽功能 官网入口 https www npmjs com package vuedraggable 实现效果 拖动左侧调整一级的顺序 拖动右侧调整二级的顺序 实现步骤 这里使用了插件 vuedraggable 第