Vue实现table上下移动功能示例


Posted in Javascript onFebruary 21, 2019

本文实例讲述了Vue实现table上下移动功能。分享给大家供大家参考,具体如下:

结合Element组件,scope中有三个参数(row,cow,$index)分别表示行内容、列内容、以及此行索引值,

table上绑定数组 :data="tableList"

<el-table :data="tableList">
</el-table>

添加一列,里面放上上移和下调两个按钮,并绑定上函数,将此行的索引值(scope.$index)作为参数,样式根据需求自己调整:

<el-button icon="el-icon-arrow-up" :disabled="scope.$index === 0" @click="upFieldOrder(scope.$index)"></el-button>
<el-button icon="el-icon-arrow-down" :disabled="scope.$index === tableList.length - 1" @click="downFieldOrder(scope.$index)"></el-button>

直接使用下面这种方式是错误的,虽然tableList的值变了,但是不会触发视图的更新:

upFieldOrder (index) {
  let temp = this.tableList[index-1];
  this.tableList[index-1] = this.tableList[index]
  this.tableList[index] = temp
 },

正确的上移函数:

upFieldOrder (index) {
  let temp = this.tableList[index-1];
  Vue.set(this.tableList, index-1, this.tableList[index])
  Vue.set(this.tableList, index, temp)
 },

同理,下移函数如下:

downFieldOrder (index) {
  let i = this.tableList[index+1];
  Vue.set(this.tableList, index+1, this.tableList[index])
  Vue.set(this.tableList, index, i)
 }

如此,前端的调整table顺序功能便做好了,我不是在每一次点击都与后台交互传入新Order,在页面销毁时,一并提交:

destroyed() {
 let param = {
  infos: []
 }
 this.tableList.forEach((dataItem,index) => {
  param.infos.push({
  参数1: dataItem.值1,
  参数1: dataItem.值2,
  参数顺序: index
  })
 });
 // 调用后台,并传入 param
 changeTableOrder(param).then(res => {
  if(res.success=== true) {
 alert('顺序调整成功')
  }
 })
 }

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
js实现瀑布流的一种简单方法实例分享
Nov 04 Javascript
将list转换为json失败的原因
Dec 17 Javascript
javascript类型转换使用方法
Feb 08 Javascript
推荐5 个常用的JavaScript调试技巧
Jan 08 Javascript
Extjs4.0 ComboBox如何实现三级联动
May 11 Javascript
js实现上下左右弹框划出效果
Mar 08 Javascript
vue一个页面实现音乐播放器的示例
Feb 06 Javascript
vue-router重定向和路由别名的使用讲解
Jan 19 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
May 30 Javascript
pm2启动ssr失败的解决方法
Jun 29 Javascript
关于vue项目中搜索节流的实现代码
Sep 17 Javascript
JS实现简单的九宫格抽奖
Jun 28 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
Feb 21 #Javascript
ES6基础之解构赋值(destructuring assignment)
Feb 21 #Javascript
ES6基础之展开语法(Spread syntax)
Feb 21 #Javascript
ES6基础之默认参数值
Feb 21 #Javascript
微信小程序HTTP接口请求封装的实现
Feb 21 #Javascript
微信小程序控制台提示warning:Now you can provide attr &quot;wx:key&quot; for a &quot;wx:for&quot; to improve performance解决方法
Feb 21 #Javascript
Element-UI中Upload上传文件前端缓存处理示例
Feb 21 #Javascript
You might like
PHP中IP地址与整型数字互相转换详解
2014/08/20 PHP
PHP使用ODBC连接数据库的方法
2015/07/18 PHP
mac系统下为 php 添加 pcntl 扩展
2016/08/28 PHP
php学习笔记之字符串常见操作总结
2019/07/16 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
动手学习无线电
2021/03/10 无线电
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
2011/11/15 Javascript
jQuery的slideToggle方法实例
2013/05/07 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
2016/06/08 Javascript
javascript 动态样式添加的简单实现
2016/10/11 Javascript
微信小程序 基础组件与导航组件详细介绍
2017/02/21 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
windows下安装python paramiko模块的代码
2013/02/10 Python
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
2018/01/11 Python
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
python实时获取外部程序输出结果的方法
2019/01/12 Python
django创建最简单HTML页面跳转方法
2019/08/16 Python
Python 词典(Dict) 加载与保存示例
2019/12/06 Python
使用CSS3的font-face字体嵌入样式的方法讲解
2016/05/13 HTML / CSS
加拿大建筑和装修专家:Reno-Depot
2017/12/21 全球购物
Python如何定义一个函数
2015/09/01 面试题
销售人员个人求职信
2013/09/26 职场文书
应聘医学检验人员自荐信
2013/09/27 职场文书
集体婚礼策划方案
2014/02/22 职场文书
员工考核评语大全
2014/04/26 职场文书
银行先进个人事迹材料
2014/05/11 职场文书
终止劳动合同通知书
2015/04/16 职场文书
孝女彩金观后感
2015/06/10 职场文书
html5表单的required属性使用
2021/07/07 HTML / CSS
Vue全局事件总线你了解吗
2022/02/24 Vue.js
MySQL transaction事务安全示例讲解
2022/06/21 MySQL