利用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 textarea的长度进行验证
May 06 Javascript
详解JavaScript中undefined与null的区别
Mar 29 Javascript
input标签内容改变的触发事件介绍
Jun 18 Javascript
jQuery的deferred对象详解
Nov 12 Javascript
JavaScript中join()方法的使用简介
Jun 09 Javascript
js控制文本框禁止输入特殊字符详解
Apr 07 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
Oct 12 Javascript
在vue中,v-for的索引index在html中的使用方法
Mar 06 Javascript
angularJS开发注意事项
May 26 Javascript
基于vue-router 多级路由redirect 重定向的问题
Sep 03 Javascript
vue路由教程之静态路由
Sep 03 Javascript
JavaScript的一些小技巧分享
Jan 06 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设计模式之注册树模式分析
2018/01/26 PHP
地震发生中逃生十大法则
2008/05/12 Javascript
javascript 异步页面查询实现代码(asp.net)
2010/05/26 Javascript
动态创建样式表在各浏览器中的差异测试代码
2011/09/13 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
2013/12/14 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
浅谈javascript的url参数parse和build函数
2017/03/04 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
从零开始用electron手撸一个截屏工具的示例代码
2018/10/10 Javascript
jQuery实现的别踩白块小游戏完整示例
2019/01/07 jQuery
vue+layui实现select动态加载后台数据的例子
2019/09/20 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
js实现计时器秒表功能
2019/12/16 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
mpvue实现微信小程序快递单号查询代码
2020/04/03 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
2020/08/27 Javascript
javascript实现下拉菜单效果
2021/02/09 Javascript
[36:33]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第二场
2018/04/04 DOTA
python 数据加密代码
2008/12/24 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
2018/11/29 Python
python执行精确的小数计算方法
2019/01/21 Python
python3实现表白神器
2019/04/09 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
Pycharm debug调试时带参数过程解析
2020/02/03 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
CSS3的 fit-content实现水平居中
2017/09/07 HTML / CSS
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
运动会横幅标语
2014/06/17 职场文书
法制演讲稿
2014/09/10 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
单位证明范文
2015/06/18 职场文书
初中团支书竞选稿
2015/11/21 职场文书
《春酒》教学反思
2016/02/22 职场文书
新手入门Mysql--sql执行过程
2021/06/20 MySQL