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去掉数组中的重复元素
Jan 13 Javascript
使用js获取地址栏中传递的值
Jul 02 Javascript
JS去除右边逗号的简单方法
Jul 03 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
Mar 10 Javascript
js控制当再次点击按钮时的间隔时间
Jun 03 Javascript
JavaScript使用slice函数获取数组部分元素的方法
Apr 06 Javascript
jQuery实现复选框批量选择与反选的方法
Jun 17 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
Sep 15 Javascript
javascript实现拖放效果
Dec 16 Javascript
JavaScript数据结构之二叉树的遍历算法示例
Apr 13 Javascript
AngularJS 前台分页实现的示例代码
Jun 07 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
Oct 09 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
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
PHP开发入门教程之面向对象
2006/12/05 PHP
php中显示数组与对象的实现代码
2011/04/18 PHP
php通过正则表达式记取数据来读取xml的方法
2015/03/09 PHP
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
Dom与浏览器兼容性说明
2010/10/25 Javascript
js鼠标及对象坐标控制属性详细解析
2013/12/14 Javascript
禁用Tab键JS代码兼容Firefox和IE
2014/04/18 Javascript
javascript版2048小游戏
2015/03/18 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
javascript合并表格单元格实例代码
2016/01/03 Javascript
JavaScript代码性能优化总结篇
2016/05/15 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
js实现带简单弹性运动的导航条
2017/02/22 Javascript
原生js实现轮播图
2017/02/27 Javascript
angularjs项目的页面跳转如何实现(5种方法)
2017/05/25 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
2020/01/21 Javascript
微信小程序自定义顶部组件customHeader的示例代码
2020/06/03 Javascript
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
python使用threading获取线程函数返回值的实现方法
2017/11/15 Python
Pycharm远程调试openstack的方法
2017/11/21 Python
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
python retrying模块的使用方法详解
2019/09/25 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
详解CSS3选择器的使用方法汇总
2015/11/24 HTML / CSS
AmazeUI的下载配置与Helloworld的实现
2020/08/19 HTML / CSS
英国家用电器购物网站:Hughes
2018/02/23 全球购物
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
用Python写一个for循环的例子
2016/07/19 面试题
妇女儿童发展规划实施方案
2014/03/16 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书