利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序


Posted in Javascript onJune 07, 2019

Vue-draggable 的github传送门 :

https://github.com/SortableJS/Vue.Draggable

一. 下载依赖包:npm install vuedraggable -S 

二. 在需要使用的当前界面引入依赖,注册组件:

import draggable from "vuedraggable";
export default {
 components: {
 draggable,
 }

三. 在template 中建立表格,分别写出thead 部分不变, 此处需要将draggable 渲染成tbody,不然draggable会被解析成div 影响样式。

(渲染方法:<draggable v-model="tablelist" element="tbody">)

<table class="dataTabble">
 <thead>
 <tr>
  <th width="110">栏目名称</th>
  <th width="200">发布时间</th>
  <th width="160">公告数量</th>
  <th width="160">操作</th>
 </tr>
 </thead>
 <draggable v-model="tablelist" element="tbody" :move="getdata" @update="datadragEnd">
 <tr v-for="(item,id) in tablelist" :key="id">
  <td>{{item.name}}</td>
  <td>{{item.time}}</td>
  <td>{{item.num}}</td>
  <td>
  <div class="tabopa">
   <a @click="dialogFormVisible = true" style="cursor:pointer">添加</a>
   <a @click="open2">删除</a>
  </div>
  </td>
 </tr>
 </draggable>
</table>
<div class="zhu mt40">提示:拖动可对栏目进行排序</div>

此处data部分,通过{ {   } } 获取data中数据,实际中通过请求获取

data() {
 return {
 tablelist: [
  { id: 1, name: "活动消息1", time: "2018-08-25 14:54", num: "1000" },
  { id: 2, name: "公司消息2", time: "2018-08-25 14:54", num: "200" },
  { id: 3, name: "个人消息3", time: "2018-08-25 14:54", num: "30000" },
  { id: 4, name: "客户消息4", time: "2018-08-25 14:54", num: "40" }
 ],
 };
},

四.相关方法

获取拖动中和拖动结束时的id

methods: {
 //拖动中与拖动结束
 getdata(evt) {
  console.log(evt.draggedContext.element.id);
 },
 datadragEnd(evt) {
  console.log("拖动前的索引 :" + evt.oldIndex);
  console.log("拖动后的索引 :" + evt.newIndex);
  console.log(this.tags);
 },

 五.贴出全部代码

<template>
 <div>
 <!--main-->
   <table class="dataTabble">
    <thead>
    <tr>
     <th width="110">栏目名称</th>
     <th width="200">发布时间</th>
     <th width="160">公告数量</th>
     <th width="160">操作</th>
    </tr>
    </thead>
    <draggable v-model="tablelist" element="tbody" :move="getdata" @update="datadragEnd">
    <tr v-for="(item,id) in tablelist" :key="id">
     <td>{{item.name}}</td>
     <td>{{item.time}}</td>
     <td>{{item.num}}</td>
     <td>
     <div class="tabopa">
      <a @click="dialogFormVisible = true" style="cursor:pointer">添加</a>
      <a @click="open2">删除</a>
     </div>
     </td>
    </tr>
    </draggable>
   </table>
   <div class="zhu mt40">提示:拖动可对栏目进行排序</div>
 <!--main end-->
 </div>
</template>
<script>
import draggable from "vuedraggable";
export default {
 components: {
 draggable,
 },
 data() {
 return {
  tablelist: [
  { id: 1, name: "活动消息1", time: "2018-08-25 14:54", num: "1000" },
  { id: 2, name: "公司消息2", time: "2018-08-25 14:54", num: "200" },
  { id: 3, name: "个人消息3", time: "2018-08-25 14:54", num: "30000" },
  { id: 4, name: "客户消息4", time: "2018-08-25 14:54", num: "40" }
  ],
 };
 },
 methods: {
 //拖动中与拖动结束
 getdata(evt) {
  console.log(evt.draggedContext.element.id);
 },
 datadragEnd(evt) {
  console.log("拖动前的索引 :" + evt.oldIndex);
  console.log("拖动后的索引 :" + evt.newIndex);
  console.log(this.tags);
 },
 }
}
</script>
<style>
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery实现id模糊查询的小例子
Mar 19 Javascript
JS获取各种浏览器窗口大小的方法
Jan 14 Javascript
javascript异步编程的4种方法
Feb 19 Javascript
js控制href内容的连接内容的变化示例
Apr 30 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
Feb 13 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
Feb 16 Javascript
JS获取鼠标相对位置的方法
Sep 20 Javascript
bootstrap中使用google prettify让代码高亮的方法
Oct 21 Javascript
移动端基础事件总结与应用
Jan 12 Javascript
webpack DllPlugin xxx is not defined解决办法
Dec 13 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
Jan 20 Javascript
用React Native制作一个简单的游戏引擎
May 27 Javascript
Vue中实现权限控制的方法示例
Jun 07 #Javascript
vue 父组件中调用子组件函数的方法
Jun 06 #Javascript
通过seajs实现JavaScript的模块开发及按模块加载
Jun 06 #Javascript
小试小程序云开发(小结)
Jun 06 #Javascript
怎么使用javascript深度拷贝一个数组
Jun 06 #Javascript
微信小程序如何使用globalData的方法
Jun 06 #Javascript
详解微信小程序开发(项目从零开始)
Jun 06 #Javascript
You might like
php empty()与isset()区别的详细介绍
2013/06/17 PHP
php实现RSA加密类实例
2015/03/26 PHP
jQuery 使用手册(一)
2009/09/23 Javascript
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
JS图片切换的具体方法(带缩略图版)
2013/11/12 Javascript
js获得页面的高度和宽度的方法
2014/02/23 Javascript
js构造函数、索引数组和属性的实现方式和使用
2014/11/16 Javascript
Google 地图API资料整理及详细介绍
2016/08/06 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
常用的9个JavaScript图表库详解
2017/12/19 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
vue实现动态显示与隐藏底部导航的方法分析
2019/02/11 Javascript
elementUI select组件默认选中效果实现的方法
2019/03/25 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
vue过滤器实现日期格式化的案例分析
2020/07/02 Javascript
python3调用R的示例代码
2018/02/23 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
np.dot()函数的用法详解
2020/01/17 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
2020/03/28 Python
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
Web Service面试题:如何搭建Axis2的开发环境
2012/06/20 面试题
大学生毕业自荐信
2013/10/10 职场文书
优秀老员工获奖感言
2014/02/15 职场文书
群众路线教育实践活动民主生活会个人检查对照思想汇报
2014/10/04 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
Jsonp劫持学习
2021/04/01 PHP
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android
如何利用python实现列表嵌套字典取值
2022/06/10 Python