动态实现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 相关文章推荐
让div层随鼠标移动的实现代码 ie ff
Dec 18 Javascript
js+css在交互上的应用
Jul 18 Javascript
别了 JavaScript中的isXX系列
Aug 01 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
Sep 06 Javascript
JavaScript中的遍历详解(多种遍历)
Apr 07 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
Jul 07 Javascript
如何理解Vue的render函数的具体用法
Aug 30 Javascript
Chrome调试折腾记之JS断点调试技巧
Sep 11 Javascript
AjaxUpLoad.js实现文件上传功能
Mar 02 Javascript
解决vue-cli + webpack 新建项目出错的问题
Mar 20 Javascript
理理Vue细节(推荐)
Apr 16 Javascript
单线程JavaScript实现异步过程详解
May 19 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
索尼SONY ICF-SW7600GR电路分析与改良
2021/03/02 无线电
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
JavaScript 指导方针
2007/04/05 Javascript
在myeclipse中如何加入jquery代码提示功能
2014/06/03 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
2014/07/18 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
利用js判断手机是否安装某个app的多种方案
2017/02/13 Javascript
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
Node.js Stream ondata触发时机与顺序的探索
2019/03/08 Javascript
浅谈express.js框架中间件(middleware)
2019/04/07 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
Python基础练习之用户登录实现代码分享
2017/11/08 Python
TensorFlow神经网络优化策略学习
2018/03/09 Python
python实现自动登录
2018/09/17 Python
深入理解Django-Signals信号量
2019/02/19 Python
Python类的继承、多态及获取对象信息操作详解
2019/02/28 Python
Python基础之条件控制操作示例【if语句】
2019/03/23 Python
Django 批量插入数据的实现方法
2020/01/12 Python
python实现从ftp上下载文件的实例方法
2020/07/19 Python
python爬虫 requests-html的使用
2020/11/30 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
2021/01/06 Python
idealfit英国:世界领先的女性健身用品和运动衣物品牌
2017/11/25 全球购物
Sneaker Studio法国:购买运动鞋
2018/06/08 全球购物
枚举和一组预处理的#define有什么不同
2016/09/21 面试题
大家访活动实施方案
2014/03/10 职场文书
企业管理毕业生求职信
2014/03/11 职场文书
新法人代表任命书
2014/06/06 职场文书
火锅店的活动方案
2014/08/15 职场文书
英文演讲稿开场白
2014/08/25 职场文书
三方股份合作协议书
2014/10/13 职场文书
MySQL自定义函数及触发器
2022/08/05 MySQL