利用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 相关文章推荐
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
Aug 15 Javascript
jQuery源码解读之removeAttr()方法分析
Feb 20 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
May 11 Javascript
用JS实现图片轮播效果代码(一)
Jun 26 Javascript
jQuery实现简单的网页换肤效果示例
Sep 18 Javascript
JS实现移动端整屏滑动的实例代码
Nov 10 Javascript
Vue2.0设置全局样式(less/sass和css)
Nov 18 Javascript
js将键值对字符串转为json字符串的方法
Mar 30 Javascript
JavaScript实现百度搜索框效果
Mar 26 Javascript
vue-property-decorator用法详解
Dec 12 Javascript
JS实现基本的网页计算器功能示例
Jan 16 Javascript
vue 实现超长文本截取,悬浮框提示
Jul 29 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入门的学习方法
2007/01/02 PHP
php 在线打包_支持子目录
2008/06/28 PHP
PHP 伪静态技术原理以及突破原理实现介绍
2013/07/12 PHP
PHP数据的提交与过滤基本操作实例详解
2016/11/11 PHP
php简单计算年龄的方法(周岁与虚岁)
2016/12/06 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
PHP实现数组的笛卡尔积运算示例
2017/12/15 PHP
JavaScript快速检测浏览器对CSS3特性的支持情况
2012/09/26 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
AngularJS 整理一些优化的小技巧
2016/08/18 Javascript
jQuery之动画效果大全
2016/11/09 Javascript
详解Vue爬坑之vuex初识
2017/06/14 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
[10:39]DOTA2上海特级锦标赛音乐会纪录片
2016/03/21 DOTA
python通过pil模块获得图片exif信息的方法
2015/03/16 Python
python引用DLL文件的方法
2015/05/11 Python
python实现聊天小程序
2018/03/13 Python
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
python生成不重复随机数和对list乱序的解决方法
2018/04/09 Python
python 列表,数组和矩阵sum的用法及区别介绍
2018/06/28 Python
Python Django给admin添加Action的方法实例详解
2019/04/29 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
2020/02/12 Python
pycharm 的Structure界面设置操作
2021/02/05 Python
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
印度民族服装购物网站:BIBA
2019/08/05 全球购物
家具厂厂长岗位职责
2014/01/01 职场文书
幼儿教师工作感言
2014/02/14 职场文书
毕业晚会主持词
2014/03/24 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
见习报告格式范文
2014/11/08 职场文书
2015年法院工作总结范文
2015/04/28 职场文书