利用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 嵌套函数指向this对象错误的解决方法
Mar 15 Javascript
jquery中ajax学习笔记4
Oct 16 Javascript
js判断是否为ie的方法小结
Jan 13 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
Jun 06 Javascript
jQuery焦点图切换简易插件制作过程全纪录
Aug 27 Javascript
DOM基础教程之使用DOM设置文本框
Jan 20 Javascript
jQuery插件PageSlide实现左右侧栏导航菜单
Apr 12 Javascript
json定义及jquery操作json的方法
Sep 29 Javascript
JS中如何实现点击a标签返回页面顶部的问题
Jan 19 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
Jul 19 Javascript
Vue下的国际化处理方法
Dec 18 Javascript
Node.js API详解之 zlib模块用法分析
May 19 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实现aes加密类分享
2014/02/16 PHP
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
服务器迁移php版本不同可能诱发的问题
2015/12/22 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
js cookies 常见网页木马挂马代码 24小时只加载一次
2009/04/13 Javascript
JavaScript 函数式编程的原理
2009/10/16 Javascript
Javascript学习笔记1 数据类型
2010/01/11 Javascript
js改变鼠标的形状和样式的方法
2014/03/31 Javascript
浅谈document.write()输出样式
2015/05/07 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
JS实现保留n位小数的四舍五入问题示例
2016/08/03 Javascript
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
浅谈js的解析顺序 作用域 严格模式
2017/10/23 Javascript
jQuery封装animate.css的实例
2018/01/04 jQuery
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
vue自动化表单实例分析
2018/05/06 Javascript
不得不知的ES6小技巧
2018/07/28 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
JavaScript实现切换多张图片
2021/01/27 Javascript
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python实现 多进程导入CSV数据到 MySQL
2017/02/26 Python
NumPy 如何生成多维数组的方法
2018/02/05 Python
python写入已存在的excel数据实例
2018/05/03 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
Python利用matplotlib绘制约数个数统计图示例
2019/11/26 Python
如何用python写个模板引擎
2021/01/14 Python
幼儿园教师奖惩制度
2014/02/01 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
市场部岗位职责
2015/02/12 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
超市主管竞聘书
2015/09/15 职场文书
小学三年级作文之写景
2019/11/05 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
python可视化之颜色映射详解
2021/09/15 Python