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 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
May 23 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
Jun 04 Javascript
基于JS代码实现图片在页面中旋转效果
Jun 16 Javascript
Javascript类型系统之undefined和null浅析
Jul 13 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
Nov 21 Javascript
原生js实现无限循环轮播图效果
Jan 20 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
Sep 30 Javascript
jQuery实现的回车触发按钮事件功能示例
Mar 25 jQuery
Vue-cli@3.0 插件系统简析
Sep 05 Javascript
vue实现的双向数据绑定操作示例
Dec 04 Javascript
基于 jQuery 实现键盘事件监听控件
Apr 04 jQuery
JS中实现浅拷贝和深拷贝的代码详解
Jun 05 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实现密保卡功能实现代码&amp;lt;打包下载直接运行&amp;gt;
2011/10/09 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
JavaScript 学习笔记(十二) dom
2010/01/21 Javascript
JsDom 编程小结
2011/08/09 Javascript
Javascript操作cookie的函数代码
2012/10/03 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
深入理解JQuery keyUp和keyDown的区别
2013/12/12 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
2014/02/26 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
树结构之JavaScript
2017/01/24 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
2017/10/19 Javascript
nuxt 实现在其它js文件中使用store的方式
2020/11/05 Javascript
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
[26:50]2018完美盛典DOTA2表演赛
2018/12/17 DOTA
Python中正则表达式的详细教程
2015/04/30 Python
Python 处理数据的实例详解
2017/08/10 Python
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
python 获取字符串MD5值方法
2018/05/29 Python
python实现图片插入文字
2019/11/26 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
Python用户自定义异常的实现
2020/12/25 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
波兰最大的宠物用品网上商店:FERA.PL
2019/08/11 全球购物
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
金融专业个人求职信范文
2013/11/28 职场文书
摄影助理岗位职责
2014/02/07 职场文书
单位委托书怎么写
2014/08/02 职场文书
中职招生先进个人材料
2014/08/31 职场文书
生产操作工岗位职责
2014/09/16 职场文书
2015年社区服务活动总结
2015/03/25 职场文书
居住证明范文
2015/06/17 职场文书
Python与C++中梯度方向直方图的实现
2022/03/17 Python
尝试使用Python爬取城市租房信息
2022/04/12 Python