element ui table(表格)实现点击一行展开功能


Posted in Javascript onDecember 04, 2018

前言

element ui是一个非常不错的vue的UI框架,element对table进行了封装,简化了vue对表格的渲染。

element ui表格中有一个功能是展开行,在2.0版本官网例子中,只可以点击右箭头可以展开,我们的很多需求是点击某一行展开

那是不是无法实现呢?其实,借助element ui的一些属性,轻松实现点击某行展开,我们还是用2.0.9版本官网的例子,

element ui table(表格)实现点击一行展开功能 

对齐改造,使之可以做到这点

<template>
 <el-table
   :data="tableData5"
   style="width: 100%"
   row-key="id"
   :expand-row-keys="expands"
   @row-click="rowClick">
  <el-table-column type="expand">
   <template slot-scope="props">
    <el-form label-position="left" inline class="demo-table-expand">
     <el-form-item label="商品名称">
      <span>{{ props.row.name }}</span>
     </el-form-item>
     <el-form-item label="所属店铺">
      <span>{{ props.row.shop }}</span>
     </el-form-item>
     <el-form-item label="商品 ID">
      <span>{{ props.row.id }}</span>
     </el-form-item>
     <el-form-item label="店铺 ID">
      <span>{{ props.row.shopId }}</span>
     </el-form-item>
     <el-form-item label="商品分类">
      <span>{{ props.row.category }}</span>
     </el-form-item>
     <el-form-item label="店铺地址">
      <span>{{ props.row.address }}</span>
     </el-form-item>
     <el-form-item label="商品描述">
      <span>{{ props.row.desc }}</span>
     </el-form-item>
    </el-form>
   </template>
  </el-table-column>
  <el-table-column
    label="商品 ID"
    prop="id">
  </el-table-column>
  <el-table-column
    label="商品名称"
    prop="name">
  </el-table-column>
  <el-table-column
    label="描述"
    prop="desc">
  </el-table-column>
 </el-table>
</template>
 
<style>
 .demo-table-expand {
  font-size: 0;
 }
 .demo-table-expand label {
  width: 90px;
  color: #99a9bf;
 }
 .demo-table-expand .el-form-item {
  margin-right: 0;
  margin-bottom: 0;
  width: 50%;
 }
</style>
 
<script>
 export default {
  data() {
   return {
    tableData5: [{
     id: '12987122',
     name: '好滋好味鸡蛋仔',
     category: '江浙小吃、小吃零食',
     desc: '荷兰优质淡奶,奶香浓而不腻',
     address: '上海市普陀区真北路',
     shop: '王小虎夫妻店',
     shopId: '10333'
    }, {
     id: '12987123',
     name: '好滋好味鸡蛋仔',
     category: '江浙小吃、小吃零食',
     desc: '荷兰优质淡奶,奶香浓而不腻',
     address: '上海市普陀区真北路',
     shop: '王小虎夫妻店',
     shopId: '10333'
    }, {
     id: '12987125',
     name: '好滋好味鸡蛋仔',
     category: '江浙小吃、小吃零食',
     desc: '荷兰优质淡奶,奶香浓而不腻',
     address: '上海市普陀区真北路',
     shop: '王小虎夫妻店',
     shopId: '10333'
    }, {
     id: '12987126',
     name: '好滋好味鸡蛋仔',
     category: '江浙小吃、小吃零食',
     desc: '荷兰优质淡奶,奶香浓而不腻',
     address: '上海市普陀区真北路',
     shop: '王小虎夫妻店',
     shopId: '10333'
    }],
 
 
    // 要展开的行,数值的元素是row的key值
    expands: []
   }
  },
  methods:{
   //在<table>里,我们已经设置row的key值设置为每行数据id:row-key="id"
   rowClick(row, event, column) {
    Array.prototype.remove = function (val) {
     let index = this.indexOf(val);
     if (index > -1) {
      this.splice(index, 1);
     }
    };
 
    if (this.expands.indexOf(row.id) < 0) {
     this.expands.push(row.id);
    } else {
     this.expands.remove(row.id);
    }
 
   }
  }
 
 }
</script>

这个例子可以直接复制运行起来,一点问题都没有,上面的代码可以实现点击某行展开,对比官网的例子,我们在table添加了

row-key="id"
:expand-row-keys="expands"
@row-click="rowClick"

这里有2个问题:

1.数据中每项没有一个唯一标示怎么办?

2.实现展开当前行的时候,其他行都能收起来

这2个问题也很简单。第2个问题,在rowClick函数给expands添加之前,先清空这个数组。

if (this.expands.indexOf(row.id) < 0) {
     this.expands = []
     this.expands.push(row.id);
    } else {
     this.expands.remove(row.id);
    }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
jquery获取复选框被选中的值
Apr 10 Javascript
javascript连续赋值问题
Jul 08 Javascript
javascript中去除数组重复元素的实现方法【实例】
Apr 12 Javascript
深入理解js数组的sort排序
May 28 Javascript
jQuery布局组件EasyUI Layout使用方法详解
Feb 28 Javascript
关于jQuery库冲突的完美解决办法
May 20 jQuery
基于easyui checkbox 的一些操作处理方法
Jul 10 Javascript
AngularJS中重新加载当前路由页面的方法
Mar 09 Javascript
JS实现的汉字与Unicode码相互转化功能分析
May 25 Javascript
JS集合set类的实现与使用方法示例
Feb 01 Javascript
Javascript call及apply应用场景及实例
Aug 26 Javascript
使用vue构建多页面应用的示例
Oct 22 Javascript
elementUI中Table表格问题的解决方法
Dec 04 #Javascript
zepto.js 实时监听输入框的方法
Dec 04 #Javascript
vue 之 css module的使用方法
Dec 04 #Javascript
Vue源码解析之数组变异的实现
Dec 04 #Javascript
小程序指纹验证的实现代码
Dec 04 #Javascript
js实现下拉框二级联动
Dec 04 #Javascript
解决JS表单验证只有第一个IF起作用的问题
Dec 04 #Javascript
You might like
php 分页类 扩展代码
2009/06/11 PHP
PHP中模拟处理HTTP PUT请求的例子
2014/07/22 PHP
用 Composer构建自己的 PHP 框架之构建路由
2014/10/30 PHP
PHP简单读取xml文件的方法示例
2017/04/20 PHP
Ubuntu上安装yaf扩展的方法
2018/01/29 PHP
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
10分钟学会写Jquery插件实例教程
2014/09/06 Javascript
js实现对table动态添加、删除和更新的方法
2015/02/10 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
angularJs中json数据转换与本地存储的实例
2018/10/08 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
JS实现简单日历特效
2020/01/03 Javascript
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
[01:48]完美圣典齐天大圣至宝宣传片
2016/12/17 DOTA
python 实现文件的递归拷贝实现代码
2012/08/02 Python
跟老齐学Python之复习if语句
2014/10/02 Python
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
python生成九宫格图片
2018/11/19 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
2020/01/10 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
Python如何转换字符串大小写
2020/06/04 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
python中count函数知识点浅析
2020/12/17 Python
css3实例教程 一款纯css3实现的发光屏幕旋转特效
2014/12/07 HTML / CSS
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
美容院考勤制度
2014/01/30 职场文书
预防煤气中毒方案
2014/06/16 职场文书
武夷山导游词
2015/02/03 职场文书
2015大学生自我评价范文
2015/03/03 职场文书
青年干部培训班学习心得体会
2016/01/06 职场文书
Redis IP地址的绑定的实现
2021/05/08 Redis
MySQL分库分表详情
2021/09/25 MySQL
Win11 25163.1010更新补丁KB5016904推送,测试服务验证管道(附更新修复汇总)
2022/07/23 数码科技