动态实现element ui的el-table某列数据不同样式的示例


Posted in Javascript onJanuary 22, 2021

问题描述

在饿了么ui的框架中,输入数据el-form,输出数据el-table。有时候产品想让枯燥的表格来点动态的样式,比如不同的内容展示不同的样式,对于这个需求,其实方式有很多种,本文列举两种,以供参考。

实现方式一

效果图如下

动态实现element ui的el-table某列数据不同样式的示例

代码如下

<template>
 <div id="app">
  <!-- 需求:三国人物表格,要求不同的国别展示不同的颜色(魏国红色、蜀国黑色、吴国蓝色) -->
  <el-table :data="tableData" style="width: 100%">
   <el-table-column prop="name" label="姓名" width="180"> </el-table-column>
   <el-table-column prop="nation" label="国别" width="180"> 
    <!-- 思路通过模板插槽,获取对应的数据,不同的数据展示不同的颜色,当然只能让显示一个(通过v-if控制) -->
    <template scope="scope">
     <div v-if="scope.row.nation == '魏国'" style="color:red;font-weight:bold;">{{scope.row.nation}}</div>
     <div v-if="scope.row.nation == '蜀国'" style="color:black;font-weight:bold;">{{scope.row.nation}}</div>
     <div v-if="scope.row.nation == '吴国'" style="color:blue;font-weight:bold;">{{scope.row.nation}}</div>
    </template>
   </el-table-column>
   <el-table-column prop="bornPlace" label="出生地方"> </el-table-column>
  </el-table>
 </div>
</template>

<script>
export default {
 name: "app",
 data() {
  return {
   tableData: [
    {
     name: "刘备",
     nation: "蜀国",
     bornPlace: "涿郡涿县(河北省涿州市)",
    },
    {
     name: "曹操",
     nation: "魏国",
     bornPlace: "沛国谯县(安徽省亳州市)",
    },
    {
     name: "孙权",
     nation: "吴国",
     bornPlace: "吴郡富春县(浙江省杭州市富阳区)",
    },
    {
     name: "关羽",
     nation: "蜀国",
     bornPlace: "河东郡解县(山西省运城市盐湖区解州镇)",
    },
   ],
  };
 },
};
</script>

方式一总结
这个第一种方式,虽然能实现效果,但是代码都写在el-table里面了,看起来比较臃肿,如果只要求动态展示两三种样式的话,还可以写,但是如果有七八种甚至更多样式动态展示,这种写法就会十分臃肿,且后期不太好维护。我个人推荐第二种方式,就是使用vue自带的 :style 动态绑定样式来实现,不仅可以简洁代码,而且可以实现更加丰富的效果。如下:

实现方式二

效果图如下

动态实现element ui的el-table某列数据不同样式的示例

代码如下

<template>
 <div id="app">
  <!-- 需求:三国人物表格,要求不同的国别展示不同的颜色(魏国红色、蜀国黑色、吴国蓝色) -->
  <el-table :data="tableData" style="width: 100%">
   <el-table-column prop="name" label="姓名" width="180"> </el-table-column>
   <el-table-column prop="nation" label="国别" width="180"> 
    <!-- 思路通过模板插槽,获取对应的数据,通过vue动态style的方法,动态显示不同的颜色,这种方式更加灵活 -->
    <template scope="scope">
     <!-- 意思是:给这个div绑定动态样式,颜色color的属性值为getColorByNation()这个方法的返回值,所以只需要通过传过去的scope 对方法的返回值做动态设置即可 -->
     <div :style="{color:getColorByNation(scope),fontSize:getSizeByNation(scope),fontWeight:'bold'}">{{scope.row.nation}}</div>
    </template>
   </el-table-column>
   <el-table-column prop="bornPlace" label="出生地方"> </el-table-column>
  </el-table>
 </div>
</template>

<script>
export default {
 name: "app",
 data() {
  return {
   tableData: [
    {
     name: "刘备",
     nation: "蜀国",
     bornPlace: "涿郡涿县(河北省涿州市)",
    },
    {
     name: "曹操",
     nation: "魏国",
     bornPlace: "沛国谯县(安徽省亳州市)",
    },
    {
     name: "孙权",
     nation: "吴国",
     bornPlace: "吴郡富春县(浙江省杭州市富阳区)",
    },
    {
     name: "关羽",
     nation: "蜀国",
     bornPlace: "河东郡解县(山西省运城市盐湖区解州镇)",
    },
   ],
  };
 },
 methods: {
  // 动态设置颜色
  getColorByNation(scope){
   console.log(scope); // 打印一下传过来的scope是对应表格不同行的整行的数据,如下有图片: 
   if(scope.row.nation == "魏国"){
    return "red"
   }else if(scope.row.nation == "蜀国"){
    return "black"
   }else if(scope.row.nation == "吴国"){
    return "blue"
   }
  },
  // 动态设置字体大小
  getSizeByNation(scope){
   if(scope.row.nation == "魏国"){
    return "14px"
   }else if(scope.row.nation == "蜀国"){
    return "18px"
   }else if(scope.row.nation == "吴国"){
    return "24px"
   }
  }
 },
};
</script>

打印传过去的scope

动态实现element ui的el-table某列数据不同样式的示例

方式二总结
这种通过vue绑定样式来控制,比第一种方式,灵活很多。毕竟第一种方式是写在el-table里面,第二种方式是写在methods方法里面。具体用那种,看场景需求。

到此这篇关于动态实现element ui的el-table某列数据不同样式的示例的文章就介绍到这了,更多相关动态实现element ui的el-table某列数据不同样式的示例内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
CSDN轮换广告图片轮换效果
Mar 27 Javascript
用倒置滤镜把div倒置,再把table倒置。
Jul 31 Javascript
Javascript常用运算符(Operators)-javascript基础教程
Dec 14 Javascript
客户端限制只能上传jpg格式图片的js代码
Dec 09 Javascript
JS应用正则表达式转换大小写示例
Sep 18 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
Oct 26 Javascript
jquery ztree异步搜索(搜叶子)实践
Feb 25 Javascript
jQuery的ajax和遍历数组json实例代码
Aug 01 Javascript
JS获取当前地理位置的方法
Oct 25 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
Dec 14 Javascript
JavaScript中变量提升与函数提升经典实例分析
Jul 26 Javascript
JS实现深度优先搜索求解两点间最短路径
Jan 17 Javascript
原生js实现放大镜组件
Jan 22 #Javascript
Vue仿Bibibili首页的问题
Jan 21 #Vue.js
如何在vue 中使用柱状图 并自修改配置
Jan 21 #Vue.js
Vue看了就会的8个小技巧
Jan 21 #Vue.js
原生js实现滑块区间组件
Jan 20 #Javascript
原生js实现下拉框选择组件
Jan 20 #Javascript
原生js实现自定义滚动条组件
Jan 20 #Javascript
You might like
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
php 注释规范
2012/03/29 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
详解PHP的Yii框架的运行机制及其路由功能
2016/03/17 PHP
PHP代码重构方法漫谈
2018/04/17 PHP
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
jQuery中triggerHandler()方法用法实例
2015/01/19 Javascript
JavaScript中的类与实例实现方法
2015/01/23 Javascript
jQuery获得document和window对象宽度和高度的方法
2015/03/25 Javascript
在jQuery中处理XML数据的大致方法
2015/08/14 Javascript
JS实现下拉菜单赋值到文本框的方法
2015/08/18 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
JS实现浏览器打印、打印预览示例
2017/02/28 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
2017/05/01 Javascript
angular4自定义组件详解
2017/09/28 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
vue中的watch监听数据变化及watch中各属性的详解
2018/09/11 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
将python文件打包成EXE应用程序的方法
2019/05/22 Python
wxpython+pymysql实现用户登陆功能
2019/11/19 Python
结合CSS3的新特性来总结垂直居中的实现方法
2016/05/30 HTML / CSS
领班岗位职责范文
2014/02/06 职场文书
小学课外活动总结
2014/07/09 职场文书
六查六看剖析材料
2014/10/06 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
学校政风行风评议心得体会
2014/10/21 职场文书
瞿秋白纪念馆观后感
2015/06/10 职场文书
golang定时器
2022/04/14 Golang
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis