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 相关文章推荐
使两个iframe的高度与内容自适应,且相等
Nov 20 Javascript
jquery入门—选择器实现隔行变色实例代码
Jan 04 Javascript
JS打印gridview实现原理及代码
Feb 05 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
Mar 23 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
Jun 20 Javascript
使用jquery.qrcode.js生成二维码插件
Oct 17 Javascript
JS 实现Base64编码与解码实例详解
Nov 07 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
Mar 30 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
Nov 03 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
Nov 11 Javascript
解决vue-cli 打包后自定义动画未执行的问题
Nov 12 Javascript
js页面加载后执行的几种方式小结
Jan 30 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编写的SVN类
2013/07/18 PHP
PHP的PSR规范中文版
2013/09/28 PHP
Laravel使用消息队列需要注意的一些问题
2017/12/13 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
2007/08/19 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
对于Form表单reset方法的新认识
2014/03/05 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
js实现的在线调色板功能完整实例
2016/12/21 Javascript
js图片轮播手动切换特效
2017/01/12 Javascript
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
微信小程序上传图片并等比列压缩到指定大小的实例代码
2019/10/24 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
python正常时间和unix时间戳相互转换的方法
2015/04/23 Python
Python中的hypot()方法使用简介
2015/05/18 Python
Python 基础教程之str和repr的详解
2017/08/20 Python
windows 下python+numpy安装实用教程
2017/12/23 Python
numpy基础教程之np.linalg
2019/02/12 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
浅谈django框架集成swagger以及自定义参数问题
2020/07/07 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
全球高级音频和视频专家:HiDef Lifestyle
2019/08/02 全球购物
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
杭州联环马网络笔试题面试题
2013/08/04 面试题
学校庆元旦歌咏比赛主持词
2014/03/18 职场文书
文秘求职信范文
2014/04/10 职场文书
学校百日安全生产活动总结
2014/07/05 职场文书
四风问题个人对照检查材料
2014/09/26 职场文书
销售辞职信范文
2015/03/02 职场文书
银行岗位培训心得体会
2016/01/09 职场文书
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL