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 相关文章推荐
用console.table()调试javascript
Sep 04 Javascript
javascript检测是否联网的实现代码
Sep 28 Javascript
jQuery实现的支持IE的html滑动条
Mar 16 Javascript
JavaScript中创建对象的模式汇总
Apr 19 Javascript
jQuery EasyUI Pagination实现分页的常用方法
May 21 Javascript
浅谈js中function的参数默认值
Feb 20 Javascript
详解vue中computed 和 watch的异同
Jun 30 Javascript
JS实现百度搜索接口及链接功能实例代码
Feb 02 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
Jan 10 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
Apr 16 Javascript
详解JavaScript实现动态的轮播图效果
Apr 29 Javascript
JS数组方法some、every和find的使用详情
Oct 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几个预定义变量$_SERVER用法小结
2014/11/07 PHP
php魔术函数__call()用法实例分析
2015/02/13 PHP
php解析xml方法实例详解
2015/05/12 PHP
thinkphp3.x中cookie方法的用法分析
2016/05/19 PHP
js报$ is not a function 的问题的解决方法
2014/01/20 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
2015/06/09 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
2016/05/20 Javascript
把普通对象转换成json格式的对象的简单实例
2016/07/04 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
原生js封装的一些jquery方法(详解)
2016/09/20 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
2016/09/23 Javascript
Bootstrap媒体对象学习使用
2017/03/07 Javascript
vue的mixins属性详解
2018/03/14 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
Python编程之string相关操作实例详解
2017/07/22 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
python+selenium+PhantomJS抓取网页动态加载内容
2020/02/25 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
python退出循环的方法
2020/06/18 Python
python利用后缀表达式实现计算器功能
2021/02/22 Python
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
校园活动策划书范文
2014/01/10 职场文书
学校地质灾害防治方案
2014/06/10 职场文书
办公室文员岗位职责范本
2014/06/12 职场文书
团队拓展活动方案
2014/08/28 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
服务员态度差检讨书
2014/10/28 职场文书
2014年副班长工作总结
2014/12/10 职场文书
2014年网管工作总结
2014/12/11 职场文书
客房部经理岗位职责
2015/02/02 职场文书
springboot集成springCloud中gateway时启动报错的解决
2021/07/16 Java/Android