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 相关文章推荐
javascript StringBuilder类实现
Dec 22 Javascript
javascript教程之不完整的继承(js原型链)
Jan 13 Javascript
js、jquery图片动画、动态切换示例代码
Jun 03 Javascript
JavaScript常用标签和方法总结
Sep 01 Javascript
谈谈javascript中使用连等赋值操作带来的问题
Nov 26 Javascript
JavaScript的函数式编程基础指南
Mar 19 Javascript
JQuery插件Marquee.js实现无缝滚动效果
Apr 26 Javascript
JavaScript对象数组排序实例方法浅析
Jun 15 Javascript
jQuery实现打开页面渐现效果示例
Jul 27 Javascript
新手快速入门微信小程序组件库 iView Weapp
Jun 24 Javascript
微信小程序 如何获取网络状态
Jul 26 Javascript
关于JSON解析的实现过程解析
Oct 08 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 checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
浅析iis7.5安装配置php环境
2015/05/10 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
2016/10/29 PHP
jquery显示和隐藏div特效实例
2013/02/27 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
2014/04/17 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
JavaScript实现的简单幂函数实例
2015/04/17 Javascript
bootstrap flask登录页面编写实例
2016/11/01 Javascript
JavaScript获取中英文混合字符串长度的方法示例
2017/02/04 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
2017/02/05 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
2017/08/16 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
2018/02/05 Javascript
微信小程序点击列表跳转到对应详情页过程解析
2019/09/26 Javascript
vue  elementUI 表单嵌套验证的实例代码
2019/11/06 Javascript
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
Pycharm新建模板默认添加个人信息的实例
2019/07/15 Python
Python之数据序列化(json、pickle、shelve)详解
2019/08/30 Python
Pytorch: 自定义网络层实例
2020/01/07 Python
Python AutoCAD 系统设置的实现方法
2020/04/01 Python
德国化妆品和天然化妆品网上商店:kosmetikfuchs.de
2017/06/09 全球购物
白兰氏健康Mall:BRAND’S
2017/11/13 全球购物
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
出纳岗位职责模板
2013/11/27 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
搞笑的获奖感言
2014/08/16 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
党的群众路线教育实践活动个人整改方案
2014/10/25 职场文书
房屋买卖协议样本
2014/11/16 职场文书
英文道歉信
2015/01/20 职场文书
面试复试通知单
2015/04/24 职场文书
高温慰问简报
2015/07/21 职场文书
2016国庆节67周年红领巾广播稿
2015/12/18 职场文书