动态实现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 相关文章推荐
js变量作用域及可访问性的探讨
Nov 23 Javascript
阻止子元素继承父元素事件具体思路及实现
May 02 Javascript
Jquery动态替换div内容及动态展示的方法
Jan 23 Javascript
jQuery中 prop() attr()使用详解
May 19 Javascript
使用requestAnimationFrame实现js动画性能好
Aug 06 Javascript
js和jquery分别验证单选框、复选框、下拉框
Dec 17 Javascript
简述Matlab中size()函数的用法
Mar 20 Javascript
判断是否存在子节点的实现代码
May 18 Javascript
微信小程序使用radio显示单选项功能【附源码下载】
Dec 11 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
Dec 25 Javascript
JS跨浏览器解析XML应用过程详解
Oct 16 Javascript
如何在vue中使用HTML 5 拖放API
Jan 14 Vue.js
原生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模块 Memcached功能多于Memcache
2011/06/14 PHP
php引用返回与取消引用的详解
2013/06/08 PHP
PHP+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
浅谈json_encode用法
2015/03/05 PHP
PHP使用array_fill定义多维数组的方法
2015/03/18 PHP
php获得网站访问统计信息类Compete API用法实例
2015/04/02 PHP
php关联数组快速排序的方法
2015/04/17 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
php实现多城市切换特效
2015/08/09 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
php格式化时间戳
2016/12/17 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
Javascript selection的兼容性写法介绍
2013/12/20 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
为什么JS中eval处理JSON数据要加括号
2015/04/13 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
Vue.js每天必学之Class与样式绑定
2016/09/05 Javascript
原生JS下拉加载插件分享
2016/12/26 Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
2017/04/18 Javascript
基于ionic实现下拉刷新功能
2018/05/10 Javascript
JS 数组基本用法入门示例解析
2020/01/16 Javascript
vue+ESLint 配置保存 自动格式化代码
2020/03/17 Javascript
Python如何为图片添加水印
2016/11/25 Python
详细分析python3的reduce函数
2017/12/05 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
python中几种自动微分库解析
2019/08/29 Python
一款纯css3实现的非常实用的鼠标悬停特效演示
2014/11/05 HTML / CSS
惠普美国官方商店:HP Official Store
2016/08/28 全球购物
大学生水文观测实习自我鉴定
2013/09/29 职场文书
应届生人事助理求职信
2013/11/09 职场文书
亮剑观后感600字
2015/06/05 职场文书
《小蝌蚪找妈妈》教学反思
2016/02/23 职场文书
妇联2016年六一国际儿童节活动总结
2016/04/06 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript