在Element Plus的Table组件中,你可以使用formatter函数来自定义列的内容。如果你想要返回HTML内容,可以直接在formatter函数中使用Vue的h函数(或者在Vue 3中使用createElement
函数)来创建VNode。
以下是一个简单的例子,展示了如何在formatter函数中返回HTML内容:
<template>
<el-table :data="tableData" style="width: 100%">
<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
prop="address"
label="地址"
:formatter="formatterAddress">
</el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [{
date: '2016-05-02',
name: '张三',
address: '<span style="color: red;">上海市普陀区金沙江路 1518 弄</span>'
}, {
date: '2016-05-04',
name: '李四',
address: '<span style="color: red;">上海市普陀区金沙江路 1517 弄</span>'
}]
}
},
methods: {
formatterAddress(row, column, cellValue, index) {
// Vue 3 使用 `h` 函数,Vue 2 使用 `this.$createElement`
const vnode = this.$createElement('div', { domProps: { innerHTML: cellValue } });
return vnode;
}
}
}
</script>
在这个例子中,我们定义了一个formatterAddress
方法,该方法使用this.$createElement
来创建一个VNode,这个VNode包含了原始地址数据,并允许它被渲染为HTML。然后,我们在el-table-column
中通过formatter
属性使用这个方法来格式化地址列的内容。
请注意,直接渲染HTML内容可能会带来安全风险,特别是如果内容是用户可控的。在实际应用中,你应该始终确保输入内容是安全的,避免XSS攻击。