利用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 相关文章推荐
Input 特殊事件onpopertychange和oninput
Jun 17 Javascript
jQuery 使用手册(三)
Sep 23 Javascript
JSONP之我见
Mar 24 Javascript
js实现将选中值累加到文本框的方法
Aug 12 Javascript
纯javascript移动优先的幻灯片效果
Nov 02 Javascript
javascript伸缩型菜单实现代码
Nov 16 Javascript
JavaScript组件开发完整示例
Dec 15 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
Sep 14 Javascript
详解vue-cli 脚手架项目-package.json
Jul 04 Javascript
实例教学如何写vue插件
Nov 30 Javascript
15 分钟掌握vue-next响应式原理
Oct 13 Javascript
Vue项目中如何封装axios(统一管理http请求)
May 02 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的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
2015/01/07 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
Javascript 面向对象编程(一) 封装
2011/08/28 Javascript
js动态为代码着色显示行号
2013/05/29 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
jquery插件开发之实现google+圈子选择功能
2014/03/10 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
react以create-react-app为基础创建项目
2018/03/14 Javascript
js实现每日签到功能
2018/11/29 Javascript
JS通过ajax + 多列布局 + 自动加载实现瀑布流效果
2019/05/30 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
超简单的微信小程序轮播图
2019/11/22 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
使用Pyrex来扩展和加速Python程序的教程
2015/04/13 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
Python3.x爬虫下载网页图片的实例讲解
2018/05/22 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
在Python中输入一个以空格为间隔的数组方法
2018/11/13 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
对Python信号处理模块signal详解
2019/01/09 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
打包python 加icon 去掉cmd黑窗口方法
2019/06/24 Python
搭建python django虚拟环境完整步骤详解
2019/07/08 Python
python基于TCP实现的文件下载器功能案例
2019/12/10 Python
如何基于python实现归一化处理
2020/01/20 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
超市5.1促销活动
2014/01/15 职场文书
销售职业生涯规划范文
2014/03/14 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
2014年企业员工工作总结
2014/12/09 职场文书