動態(tài)實現(xiàn)element ui的el-table某列數(shù)據(jù)不同樣式的示例
問題描述
在餓了么ui的框架中,輸入數(shù)據(jù)el-form,輸出數(shù)據(jù)el-table。有時候產品想讓枯燥的表格來點動態(tài)的樣式,比如不同的內容展示不同的樣式,對于這個需求,其實方式有很多種,本文列舉兩種,以供參考。
實現(xiàn)方式一
效果圖如下
代碼如下
<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"> <!-- 思路通過模板插槽,獲取對應的數(shù)據(jù),不同的數(shù)據(jù)展示不同的顏色,當然只能讓顯示一個(通過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: "吳郡富春縣(浙江省杭州市富陽區(qū))", }, { name: "關羽", nation: "蜀國", bornPlace: "河東郡解縣(山西省運城市鹽湖區(qū)解州鎮(zhèn))", }, ], }; }, }; </script>
方式一總結
這個第一種方式,雖然能實現(xiàn)效果,但是代碼都寫在el-table里面了,看起來比較臃腫,如果只要求動態(tài)展示兩三種樣式的話,還可以寫,但是如果有七八種甚至更多樣式動態(tài)展示,這種寫法就會十分臃腫,且后期不太好維護。我個人推薦第二種方式,就是使用vue自帶的 :style 動態(tài)綁定樣式來實現(xiàn),不僅可以簡潔代碼,而且可以實現(xiàn)更加豐富的效果。如下:
實現(xiàn)方式二
效果圖如下
代碼如下
<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"> <!-- 思路通過模板插槽,獲取對應的數(shù)據(jù),通過vue動態(tài)style的方法,動態(tài)顯示不同的顏色,這種方式更加靈活 --> <template scope="scope"> <!-- 意思是:給這個div綁定動態(tài)樣式,顏色color的屬性值為getColorByNation()這個方法的返回值,所以只需要通過傳過去的scope 對方法的返回值做動態(tài)設置即可 --> <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: "吳郡富春縣(浙江省杭州市富陽區(qū))", }, { name: "關羽", nation: "蜀國", bornPlace: "河東郡解縣(山西省運城市鹽湖區(qū)解州鎮(zhèn))", }, ], }; }, methods: { // 動態(tài)設置顏色 getColorByNation(scope){ console.log(scope); // 打印一下傳過來的scope是對應表格不同行的整行的數(shù)據(jù),如下有圖片: if(scope.row.nation == "魏國"){ return "red" }else if(scope.row.nation == "蜀國"){ return "black" }else if(scope.row.nation == "吳國"){ return "blue" } }, // 動態(tài)設置字體大小 getSizeByNation(scope){ if(scope.row.nation == "魏國"){ return "14px" }else if(scope.row.nation == "蜀國"){ return "18px" }else if(scope.row.nation == "吳國"){ return "24px" } } }, }; </script>
打印傳過去的scope
方式二總結
這種通過vue綁定樣式來控制,比第一種方式,靈活很多。畢竟第一種方式是寫在el-table里面,第二種方式是寫在methods方法里面。具體用那種,看場景需求。
到此這篇關于動態(tài)實現(xiàn)element ui的el-table某列數(shù)據(jù)不同樣式的示例的文章就介紹到這了,更多相關動態(tài)實現(xiàn)element ui的el-table某列數(shù)據(jù)不同樣式的示例內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
vue前端優(yōu)雅展示后端十萬條數(shù)據(jù)面試點剖析
這篇文章主要為大家介紹了vue前端優(yōu)雅展示后端十萬條數(shù)據(jù)的考點剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07vue3數(shù)據(jù)可視化實現(xiàn)數(shù)字滾動特效代碼
這篇文章主要介紹了vue3數(shù)據(jù)可視化實現(xiàn)數(shù)字滾動特效,實現(xiàn)思路是使用Vue.component定義公共組件,使用window.requestAnimationFrame(首選,次選setTimeout)來循環(huán)數(shù)字動畫,詳細代碼跟隨小編一起看看吧2022-09-09使用vue-cli創(chuàng)建項目的圖文教程(新手入門篇)
這篇文章主要介紹了新手入門vue 使用vue-cli創(chuàng)建項目的圖文教程,本文是針對完全不了解過vue和npm的小白而寫的,需要的朋友可以參考下2018-05-05vue3.0 CLI - 2.1 - component 組件入門教程
這篇文章主要介紹了vue3.0 CLI - 2.1 - component 組件入門教程,本文主要的關注點就是組件,本文通過實例代碼相結合的形式給大家介紹的非常詳細,需要的朋友可以參考下2018-09-09