ant框架,vue语法,table表格问题
具体情况:
我要在表格中渲染一列带有 tag 颜色渲染得,于是我是用了插槽,因为后端给我反的只是一个状态码,code值,所以我需要对这个值进行翻译,我定义了一个dictList,将所有得状态以及翻译放在一起了,方便维护。我在写表格插槽时候需要将翻译得list传递到插槽内部,跪求各位大佬如何传递这个list
目前只有两列,如果后续出现多列,那我需要写更多得插槽
两个插槽是大体一样得,只有翻译需要翻译得list不一样,如何在定义插槽时候将list传递进去
data(){
return {
listA: [{code: 0,value: '你好'},{code: 1,value: '不好'},],
listB: [{code: 'AA',value: '描述1'},{code: 'BB',value: '描述2'},],
}
},
// 表格渲染
computed: {
columns() {
return [
{
title: 'ID',
dataIndex: 'id',
},
{
title: '等级',
dataIndex: 'severity',
// listA: listA 为错误写法,我要的就是类似得效果
// 我只有在此处才知道要传递哪个list给插槽
scopedSlots: { customRender: 'tagDictTrans',listA: listA },
},
{
title: '处置状态',
dataIndex: 'status',
scopedSlots: { customRender: 'tagDictTrans1',listB: listB },
},
]
},
},
// 插槽渲染
<template slot="tagDictTrans" slot-scope="text" :listA="listA">
// 在此处使用listA packagesSeverity是个变量并不知道是哪个list,所以需要传值进来
<a-tag :color="dictList.translateDict(packagesSeverity, text).color">{{ dictList.translateDict(packagesSeverity, text).text }}</a-tag>
</template>
<template slot="tagDictTrans1" slot-scope="text">
<a-tag :color="dictList.translateDict(packagesStatus, text).color">{{ dictList.translateDict(packagesStatus, text).text }}</a-tag>
</template>
const packagesStatus = [
{ value: '0', text: '未修复', color: 'orange' },
{ value: '1', text: '无需修复', color: 'blue' },
{ value: '2', text: '已修复', color: 'green' },
]
const packagesSeverity = [
{ value: '0', text: '低', color: 'blue' },
{ value: '1', text: '中', color: 'green' },
{ value: '2', text: '高', color: 'orange' },
{ value: '3', text: '严重', color: 'pink' },
]
]
// 字典翻译
const translateDict = (list, e) => {
var obj = {}
list.map(i => {
if (i.value == e) {
obj = i
}
})
return obj
}
export default {
packagesStatus,
packagesSeverity,
translateDict,
}
直接写customRender呢?
建议你先自己封装一个组件,接收两个参数,一个是Dict,也就是对应关系。另一个是当前值
当你写好这个组件后,比如它叫TagRenderer