ant-design-vue的a-table组件如何定义单元格内容,整理一下
版本: ant-design-vue4
方式1:bodyCell插槽
<template> <a-table :columns="columns" :data-source="data"> <template #bodyCell="{ text, record, index, column }"> <template v-if="column.dataIndex === 'value'"> <span :style="text > 0 ? { color: 'red' } : {}"> {{ text }} </span> </template> </template> </a-table> </template>
<script setup> let columns=[ { title: 'Name', dataIndex: 'name', key: 'name', }, { title: 'Value', dataIndex: 'value', key: 'value', }, ]; </script>
|
方式2:为每列自定义插槽名称
<template> <a-table :columns="columns" :data-source="data"> <template #name="{ text, record }"> <span>{{ text }} (自定义内容)</span> </template> </a-table> </template>
<script setup> let columns: [ { title: 'Name', dataIndex: 'name', key: 'name', slots: { customRender: 'name' }, }, { title: 'Age', dataIndex: 'age', key: 'age', }, ] </script>
|
方式3:使用 customRender 函数
<script setup> import { h } from 'vue';
let columns = [ { title: '编码', dataIndex: 'code', key: 'code', customRender: ({ text, record }) => { let value = record.code const formattedValue = formatDecimal(text);
if (record.type.indexOf('剩余') === -1) { return formattedValue; } else { if (text > 0) { return h('span', { style: { color: 'red' } }, formattedValue); } else { return formattedValue; } } }, }, ],
function formatDecimal(value) { if (typeof value === 'number' && !Number.isInteger(value)) { return value.toFixed(2); } return value; }, </script>
|