利用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 相关文章推荐
js中的window.open返回object的错误的解决方法
Aug 15 Javascript
JavaScript学习笔记(十七)js 优化
Feb 04 Javascript
JavaScript中的稀疏数组与密集数组[译]
Sep 17 Javascript
jquery动态分页效果堪比时光网
Sep 25 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
Mar 05 Javascript
Javascript实现获取及设置光标位置的方法
Jul 21 Javascript
AngularJS控制器继承自另一控制器
May 09 Javascript
js/jq仿window文件夹框选操作插件
Mar 08 Javascript
React Native验证码倒计时工具类分享
Oct 24 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
Nov 10 Javascript
Vue中使用vee-validate表单验证的方法
May 09 Javascript
vue中配置scss全局变量的步骤
Dec 28 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
thinkphp中的url跳转用法分析
2016/07/12 PHP
微信支付开发动态链接Native支付
2016/07/12 PHP
PHP的中使用非缓冲模式查询数据库的方法
2017/02/05 PHP
Jquery实现视频播放页面的关灯开灯效果
2013/05/27 Javascript
ExtJs中gridpanel分组后组名排序实例代码
2013/12/02 Javascript
jQuery动态背景图片效果实现方法
2015/07/03 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
清除js缓存的多种方法总结
2016/12/09 Javascript
浅析javascript中的Event事件
2016/12/09 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
详谈Node.js之操作文件系统
2017/08/29 Javascript
JS数组的常用10种方法详解
2020/05/08 Javascript
vue实现简单全选和反选功能
2020/09/15 Javascript
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
python迭代器的使用方法实例
2013/11/21 Python
python抓取网页图片示例(python爬虫)
2014/04/27 Python
Python字符串切片操作知识详解
2016/03/28 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
Python合并2个字典成1个新字典的方法(9种)
2019/12/19 Python
Python lxml模块的基本使用方法分析
2019/12/21 Python
如何基于python实现画不同品种的樱花树
2020/01/03 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
丝芙兰美国官网:SEPHORA美国
2016/08/03 全球购物
Europcar意大利:汽车租赁
2019/07/07 全球购物
Juice Beauty官网:有机美容产品,护肤与化妆品
2020/06/13 全球购物
客户经理岗位职责
2013/12/08 职场文书
办公室岗位职责
2014/02/12 职场文书
上课迟到检讨书
2014/02/19 职场文书
企业晚会策划方案
2014/05/29 职场文书
绿色校园广播稿
2014/10/13 职场文书
行政主管岗位职责
2015/02/03 职场文书
入党积极分子党小组意见
2015/06/02 职场文书
导游词之峨眉山
2019/12/16 职场文书
JS数组的常用方法整理
2021/03/31 Javascript
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS