vxe-table如何在單元格中渲染簡單的餅圖
vxe-table在單元格中渲染餅圖
有時(shí)候遇到比較特殊的需求,比如在很小的單元格中要放個(gè)餅圖,如果使用 echart 等圖表插件又顯得太笨重了,畢竟單元格大小有限,vxe-table 官方也提供了一個(gè)非常流暢簡單圖表渲染,僅用于單元格
具體如下:
安裝插件
npm install vxe-table-plugin-renderer
```javascript import Vue from 'vue' import VXETable from 'vxe-table' import VXETablePluginRenderer from 'vxe-table-plugin-renderer' import 'vxe-table/lib/style.css' import 'vxe-table-plugin-renderer/dist/style.css' VXETable.use(VXETablePluginRenderer) Vue.use(VXETable)
基本參數(shù)
## bar-柱狀圖 props: | 屬性 | 描述 | 類型 | |------|------|-----| | bar.width | 柱子寬度 | number | string | | bar.max | 柱子最大值 | number | | colors | 柱子顏色列表 | string[] | | tooltip.formatter | 提示內(nèi)容格式 | string | | label.color | 顯示值的顏色 | string | | label.formatter | 顯示值的格式({row, value}) | string | # pie-餅圖 props: | 屬性 | 描述 | 類型 | |------|------|-----| | diameter | 餅圖直徑 | number | | margin | 餅圖間距 | number | | colors | 扇區(qū)的顏色列表 | string[] | | tooltip.formatter | 提示內(nèi)容格式 | string | | ring.diameter| 內(nèi)圓直徑 | number | | ring.color | 內(nèi)圓的顏色 | string | | label.color | 顯示值的顏色 | string | | label.formatter | 顯示值的格式({row, value}) | string |
<vxe-table border resizable show-overflow height="400" :data="tableData"> <vxe-column type="seq" width="60"></vxe-column> <vxe-column field="name" title="名稱"></vxe-column> <vxe-column field="role" title="職務(wù)"></vxe-column> <vxe-column field="num3" title="項(xiàng)目進(jìn)度" width="140" :cell-render="{name: 'bar', props: {bar: {max: 100 },label: {formatter: '{value}%'}}}"></vxe-column> <vxe-column field="num1" title="項(xiàng)目進(jìn)度" width="100" :cell-render="{name: 'pie', props: {ring: { diameter: '60%' }, tooltip: {formatter: '名稱:{row.name}\n進(jìn)度:{value}%'}}}"></vxe-column> <vxe-column field="num2" title="完成比例" width="140" :cell-render="{name: 'pie', props: {tooltip: {formatter: '比例:{value}'}}}"></vxe-column> </vxe-table>
export default { data() { return { tableData: [ { name: 'test1', role: 'Developer', num1: [12, 34, 62], num2: [24, 81, 28], num3: [13, 45, 10] }, { name: 'test2', role: 'Tester', num1: [41, 12, 33], num2: [86, 9, 16], num3: [13, 45, 96] }, { name: 'test3', role: 'Developer', num1: [96, 75, 28], num2: [47, 72, 37], num3: [22, 97, 100] }, { name: 'test4', role: 'Developer', num1: [33, 75, 77], num2: [46, 12, 97], num3: [13, 45, 24] }, { name: 'test5', role: 'Tester', num1: [96, 75, 24], num2: [8, 72, 37], num3: [13, 45, 96] }, { name: 'test6', role: 'Developer', num1: [7, 55, 88], num2: [84, 72, 110], num3: [64, 45, 71] }, { name: 'test7', role: 'Tester', num1: [96, 75, 28], num2: [74, 36, 37], num3: [23, 45, 96] }, { name: 'test8', role: 'Developer', num1: [41, 11, 66], num2: [64, 24, 99], num3: [53, 4, 96] }, { name: 'test9', role: 'Tester', num1: [22, 14, 28], num2: [11, 72, 37], num3: [34, 45, 96] }, { name: 'test10', role: 'Developer', num1: [96, 75, 22], num2: [47, 22, 10], num3: [22, 44, 40] } ] } } }
解決vxe-table的表頭動態(tài)渲染第一次不顯示
問題描述
vxe-table表頭當(dāng)使用了<vxe-colgroup>(二級/多級表頭),設(shè)一級表頭寫死,二級表頭動態(tài)加載,那么每次賦值二級表頭時(shí),值賦上去了,頁面不響應(yīng),第一次加載不渲染。
為什么會這樣?
vxe-table數(shù)據(jù)響應(yīng)是根據(jù)v-for的key進(jìn)行檢索,如果一級表頭key不變,那么就不會重新渲染
解決方法
給最外層的的for循環(huán)的key加隨機(jī)數(shù),即:key="index+Math.random()",每次渲染時(shí),一級表頭綁定的key都是不一樣,那么就渲染成功啦(Math.round(Math.random() * 1000))一個(gè)整數(shù)
(給key加了隨機(jī)數(shù),如果表格是可以有部分是編輯的輸入框,可能會出現(xiàn),輸入一次后鼠標(biāo)會失焦,解決方法:不要直接把隨機(jī)數(shù)加在:key上,用一個(gè)變量從父組件傳進(jìn)來,默認(rèn)是0,當(dāng)父組件的動態(tài)渲染完成后,執(zhí)行一次Math.round(Math.random() * 1000),理由:(我猜的)當(dāng)在輸入一次的時(shí)候,表頭是的key會再次隨機(jī),那么就是重新渲染,即會造成失焦,可能是直接換了一個(gè)dom)
如果覺得進(jìn)入頁面等一點(diǎn)點(diǎn)時(shí)間,表頭才變,可以給<vxe-table>加:loading="loading",即在渲染時(shí),設(shè)true,渲染完成后設(shè)false
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
van-dialog彈窗異步關(guān)閉功能-校驗(yàn)表單實(shí)現(xiàn)
有時(shí)候我們需要通過彈窗去處理表單數(shù)據(jù),在原生微信小程序配合vant組件中有多種方式實(shí)現(xiàn),其中UI美觀度最高的就是通過van-dialog嵌套表單實(shí)現(xiàn),這篇文章主要介紹了van-dialog彈窗異步關(guān)閉-校驗(yàn)表單,需要的朋友可以參考下2023-11-11vue實(shí)現(xiàn)實(shí)時(shí)搜索顯示功能
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)實(shí)時(shí)搜索顯示功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04TypeError:res.forEach?is?not?a?function報(bào)錯(cuò)解決辦法
這篇文章主要給大家介紹了關(guān)于TypeError:res.forEach?is?not?a?function報(bào)錯(cuò)的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-07-07vue中動態(tài)修改img標(biāo)簽中src的方法實(shí)踐
本文主要介紹了vue中動態(tài)修改img標(biāo)簽中src的方法實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07