利用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方法和技巧大全
Dec 27 Javascript
javascript 获取函数形参个数
Jul 31 Javascript
jQuery中:header选择器用法实例
Dec 29 Javascript
nw.js实现类似微信的聊天软件
Mar 16 Javascript
js调出上下文菜单的实例
Dec 17 Javascript
ClearTimeout消除闪动实例代码
Feb 29 Javascript
jQuery Mobile和HTML5开发App推广注册页
Nov 07 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
Feb 18 Javascript
js return返回多个值,通过对象的属性访问方法
Feb 21 Javascript
详解JavaScript实现动态的轮播图效果
Apr 29 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
Apr 08 Javascript
Vue中避免滥用this去读取data中数据
Mar 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的ob_start();控制您的浏览器cache!
2007/02/14 PHP
php 保留小数点
2009/04/21 PHP
PHP中substr函数字符串截取用法分析
2016/01/07 PHP
jquery提示 &quot;object expected&quot;的解决方法
2009/12/13 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
jQuery中:selected选择器用法实例
2015/01/04 Javascript
jQuery实现简单下拉导航效果
2015/09/07 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
2015/11/07 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
利用Vue.js指令实现全选功能
2016/09/08 Javascript
JavaScript中常用的验证reg
2016/10/13 Javascript
微信小程序 开发之快递查询功能的实现
2017/01/09 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
vue router2.0二级路由的简单使用
2017/07/05 Javascript
Vue render深入开发讲解
2018/04/13 Javascript
Node.js+ELK日志规范的实现
2019/05/23 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
python里的单引号和双引号的有什么作用
2020/06/17 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
欧洲最大的滑雪假期供应商之一:Sunweb Holidays
2018/01/06 全球购物
信用社员工先进事迹材料
2014/02/04 职场文书
《少年王冕》教学反思
2014/04/11 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
节约用电标语
2014/06/17 职场文书
个人股份合作协议书
2014/10/24 职场文书
小学生读书笔记范文
2015/06/30 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书
Ruby处理CSV数据方法详解
2022/04/18 Ruby
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers