《elementui col_elementui columns自定义render》
解决方案简述
在使用ElementUI的表格(Table)组件时,我们可能会遇到需要自定义列(columns)渲染的需求。通过render
函数可以实现这种自定义渲染,从而让表格中的内容展示更加灵活多样。
一、利用render函数直接自定义
在定义表格的列(columns)时,可以直接添加render
属性。例如:
```vue
点击
export default {
data() {
return {
tableData: [
{
date: '2016-05-02',
name: '王小虎'
},
{
date: '2016-05-04',
name: '王小明'
}
]
};
},
methods: {
handleClick(row) {
console.log(row);
},
renderHeader(h, { column }) {
return h('span', {}, `这是${column.label}的表头`);
},
renderCell(h, { row, column }) {
return h('span', {}, `${row.name}的自定义内容`);
}
}
};
``
renderHeader
在这个例子中,用于自定义表头,
renderCell`用于自定义单元格内容。
二、借助 scoped - slot 方式间接实现
虽然题目要求是关于render
,但scoped - slot
也是一种很常见且功能强大的自定义方式。
vue
<template>
<el-table :data="tableData">
<el-table-column
prop="date"
label="日期"
width="180">
</el-table-column>
<el-table-column
prop="name"
label="姓名"
width="180">
</el-table-column>
<el-table-column
label="操作">
<template slot-scope="scope">
<div v-if="scope.row.name === '王小虎'">
<el-button type="success">特殊按钮</el-button>
</div>
<div v-else>
<el-button type="primary">普通按钮</el-button>
</div>
</template>
</el-table-column>
</el-table>
</template>
这种方式可以根据行数据的不同,灵活地渲染不同的内容,而且代码结构相对清晰易懂。
无论是使用render
函数还是scoped - slot
,都能很好地满足我们在ElementUI表格中对列自定义渲染的需求,我们可以根据实际项目需求和自己的编码习惯选择合适的方式。