利用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中each()的使用方法说明
Aug 19 Javascript
jquery 选项卡效果 新手代码
Jul 08 Javascript
Backbone.js中的集合详解
Jan 14 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
Mar 02 Javascript
JS实现状态栏跑马灯文字效果代码
Oct 24 Javascript
每日十条JavaScript经验技巧(一)
Jun 23 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
Oct 27 Javascript
JavaScript表单验证开发
Nov 23 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
Mar 28 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
Oct 30 Javascript
React 条件渲染最佳实践小结(7种)
Sep 27 Javascript
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
Feb 20 Vue.js
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往windows中添加用户
2006/12/06 PHP
PHP clearstatcache()函数详解
2010/03/02 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
2014/01/07 PHP
ThinkPHP CURD方法之data方法详解
2014/06/18 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
动态创建样式表在各浏览器中的差异测试代码
2011/09/13 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
2016/03/25 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
12个非常有用的JavaScript技巧
2017/05/17 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
Webpack打包字体font-awesome的方法示例
2018/04/26 Javascript
[原创]jquery判断元素内容是否为空的方法
2018/05/04 jQuery
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
[02:54]DOTA2英雄基础教程 暗影牧师戴泽
2013/12/05 DOTA
python sort、sorted高级排序技巧
2014/11/21 Python
python pygame实现球球大作战
2019/11/25 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
keras获得model中某一层的某一个Tensor的输出维度教程
2020/01/24 Python
Python Selenium模块安装使用教程详解
2020/07/09 Python
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
个人求职简历的自我评价范文
2013/10/09 职场文书
新闻学专业应届生求职信
2013/11/08 职场文书
企业职业病防治方案
2014/05/29 职场文书
迎七一演讲稿
2014/09/12 职场文书
悬崖上的金鱼姬观后感
2015/06/15 职场文书
新闻简讯格式及范文
2015/07/22 职场文书
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers
Golang ort 中的sortInts 方法
2022/04/24 Golang