动态实现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 相关文章推荐
鼠标滚轮改变图片大小的示例代码
Nov 20 Javascript
js的2种继承方式详解
Mar 04 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
Jun 16 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
Dec 01 Javascript
JavaScript代码判断点击第几个按钮
Dec 13 Javascript
jQuery CSS3相结合实现时钟插件
Jan 08 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
Dec 28 Javascript
ES6中Array.includes()函数的用法
Sep 20 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
Oct 17 Javascript
基于jQuery Ajax实现下拉框无刷新联动
Dec 06 jQuery
JavaScript实现快速排序的方法分析
Jan 10 Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
Apr 14 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
理解php原理的opcodes(操作码)
2010/10/26 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
PHP实现对站点内容外部链接的过滤方法
2014/09/10 PHP
PHP中的一些常用函数收集
2015/05/26 PHP
php监测数据是否成功插入到Mysql数据库的方法
2016/11/25 PHP
PHP 匿名函数与注意事项详细介绍
2016/11/26 PHP
DIV菜单层实现代码
2010/11/19 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
2013/12/18 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
bootstrap datepicker限定可选时间范围实现方法
2016/09/28 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
原生js简单实现放大镜特效
2017/05/16 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
ajax请求data遇到的问题分析
2018/01/18 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
vue使用better-scroll实现下拉刷新、上拉加载
2018/11/23 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
es6 for循环中let和var区别详解
2020/01/12 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
[15:39]教你分分钟做大人:龙骑士
2014/10/30 DOTA
python 实现矩阵填充0的例子
2019/11/29 Python
Python类如何定义私有变量
2020/02/03 Python
Django接收照片储存文件的实例代码
2020/03/07 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
2020/04/12 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
巴基斯坦购物网站:Goto
2019/03/11 全球购物
股东合作协议书范本
2014/04/14 职场文书
公司经营目标责任书
2015/01/29 职场文书
企业爱心捐款倡议书
2015/04/27 职场文书
大学团日活动总结书
2015/05/11 职场文书
Go语言设计模式之结构型模式
2021/06/22 Golang
Python 数据可视化之Seaborn详解
2021/11/02 Python
聊聊SpringBoot自动装配的魔力
2021/11/17 Java/Android