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动态设置div的值下例子
Oct 29 Javascript
JS获取select的value和text值的简单实例
Feb 26 Javascript
JavaScript严格模式禁用With语句的原因
Oct 20 Javascript
js实现非常简单的焦点图切换特效实例
May 07 Javascript
c#程序员对TypeScript的认识过程
Jun 19 Javascript
Vue表单实例代码
Sep 05 Javascript
JS实现的tab切换选项卡效果示例
Feb 28 Javascript
vue与TypeScript集成配置最简教程(推荐)
Oct 17 Javascript
Vue2.0结合webuploader实现文件分片上传功能
Mar 09 Javascript
Vuex 单状态库与多模块状态库详解
Dec 11 Javascript
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
Mar 15 Javascript
JS利用prototype给类添加方法操作详解
Jun 21 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 不使用js实现页面跳转
2014/02/11 PHP
浅谈PHP的反射机制
2016/12/15 PHP
Laravel 修改验证异常的响应格式实例代码详解
2020/05/25 PHP
一个简单的JavaScript 日期计算算法
2009/09/11 Javascript
javascript动态添加checkbox复选框的方法
2015/12/23 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
jquery获取点击控件的绝对位置简单实例
2016/10/13 Javascript
概述BootStrap中role=&quot;form&quot;及role作用角色
2016/12/08 Javascript
jQuery Jsonp跨域模拟搜索引擎
2017/06/17 jQuery
for循环 + setTimeout 结合一些示例(前端面试题)
2017/08/30 Javascript
Node.js readline模块与util模块的使用
2018/03/01 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
JS实现点击按钮可实现编辑功能
2018/07/03 Javascript
Vue通过ref父子组件拿值方法
2018/09/12 Javascript
vue全局自定义指令-元素拖拽的实现代码
2019/04/14 Javascript
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
通过JS判断网页是否为手机打开
2020/10/28 Javascript
Python第三方库的安装方法总结
2016/06/06 Python
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
python实现简单中文词频统计示例
2017/11/08 Python
浅谈Pandas 排序之后索引的问题
2018/06/07 Python
Python实现获取系统临时目录及临时文件的方法示例
2019/06/26 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
2019/08/31 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
根据tensor的名字获取变量的值方式
2020/01/04 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
python爬虫多次请求超时的几种重试方法(6种)
2020/12/01 Python
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
艺术学院毕业生求职信
2014/07/09 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
建党伟业电影观后感
2015/06/01 职场文书
2015教师节通讯稿
2015/07/20 职场文书
学校2016年九九重阳节活动总结
2016/04/01 职场文书